错误:找不到视图或其主控形状.搜索了以下位置
本文关键字:搜索 位置 找不到 视图 错误 | 更新日期: 2023-09-27 18:19:31
我遇到一个特定控制器操作不显示视图的问题。
以下是控制器操作:
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);
}
控制器名称为"Student",视图位于"Views/Student/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
此外,为什么它在寻找"Thomas Guenn.aspx"而不是"DisplayStudents.aspx"?
这是我的查看页面:
>"%>显示学生学生名单如下:
<table> <% foreach (var item in Model) { %> <tr> <td> <%= Html.Encode(item)%> </td> </tr> <% } %> </table> </body> </html>
因为您的View(name);
调用正在调用重载View(string viewName)
。如果您想将字符串作为模型传递,请尝试使用
return View((object)name);
相反。
如果这不起作用,请尝试显式指定viewName,使用重载View(string viewName, object model)
,如下所示:
return View("DisplayStudents", name);
UPD:查看您的视图代码,我可以说它也不会返回预期的页面:您将从控制器返回单个字符串项作为模型,但您的DisplayStudents.aspx
需要一个集合。您还应该更正您的视图(这样它将接受单个字符串作为模型),或者从控制器返回一个IEnumerable<string>
,方法是从name
的LINQ表达式中删除.First()
。
发生这种情况是因为重载需要一个对象(如果它是数据)和一个字符串(如果您在.中传递视图的名称)
使用这个替代:
return View((object)name);