2012-01-04 15 views
2

ビューを表示しない特定のコントローラーアクションに問題があります。ここでエラー:ビューまたはそのマスターが見つかりませんでした。以下の場所が検索されました

は、コントローラのアクションです:なぜ私はまだ、このエラーが出るん

public ActionResult DisplayStudents(string id) 
     { 
      var name = (from p in data.StudentTable.Where(a => a.ClassNumberID == id) 
            group n by n.StudentName into g 
            select g.Key).First(); 

      return View(name); 
     } 

コントローラ名は「学生」で、ビューは、「ビュー/学生/ DisplayStudents.aspx」に存在している

Server Error in '/' Application. 
-------------------------------------------------------------------------------- 

The view 'Thomas Guenn' or its master was not found. The following locations were searched: 
~/Views/Student/Thomas Guenn.aspx 
~/Views/Student/Thomas Guenn.ascx 
~/Views/Shared/Thomas Guenn.aspx 
~/Views/Shared/Thomas Guenn.ascx 

はまた、なぜそれが "DisplayStudents.aspx" の代わりに "トーマスGuenn.aspx" を探していますか?

は、ここに私の見るページです:

>" %>

DisplayStudents Students are listed below:

<table> 

<% foreach (var item in Model) { %> 
    <tr> 
     <td> 
      <%= Html.Encode(item)%> 
     </td> 
    </tr> 

<% } %> 

</table> </body> </html> 
+0

あなたが休憩を入れた場合コントローラーのポイント、あなたが期待しているアクションを打っていますか? –

+0

あなたのルートとリクエストされているURLを表示できますか?これはルーティング問題のように見えます。 – rejj

答えて

5

あなたView(name);コールが過負荷View(string viewName)を呼び出しているので。モデルとして文字列を渡したい場合は、代わりに

return View((object)name); 

を試してみてください。

これが動作しない場合は、このような過負荷View(string viewName, object model)を使用して、明示たviewNameを指定しようとは:

return View("DisplayStudents", name); 

UPD:はあなたのビューのコードを見て、私はそれが予想を返さないと言うことができますコントローラからモデルとして単一の文字列アイテムを返していますが、DisplayStudents.aspxにはコレクションが必要です。また、ビューを修正する(モデルとして単一の文字列を受け入れる)か、コントローラーからIEnumerable<string>を返します。nameのLINQ式から.First()を削除してください。

3

過負荷は、それがデータであれば、オブジェクト、そしてあなたは、ビューの名前を渡している場合は、文字列を期待しているため、この問題が発生し、この代わりに

使用:。

return View((object)name); 
関連する問題