C# 错误:找不到视图或其主视图。搜查了下列地点
我有一个特定控制器操作不显示视图的问题 以下是控制器操作:C# 错误:找不到视图或其主视图。搜查了下列地点,c#,html,asp.net-mvc,C#,Html,Asp.net Mvc,我有一个特定控制器操作不显示视图的问题 以下是控制器操作: public ActionResult DisplayStudents(string id) { var name = (from p in data.StudentTable.Where(a => a.ClassNumberID == id) group n by n.StudentName into g
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/displaystusts.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”
这是我的查看页面:
>" %>
展示学生
学生名单如下:
因为您的视图(名称);
调用正在调用重载视图(字符串视图名称)
。如果要将字符串作为模型传递,请尝试使用
return View((object)name);
相反
如果这不起作用,请尝试使用重载View(字符串viewName,对象模型)
明确指定viewName,如下所示:
return View("DisplayStudents", name);
UPD:查看您的视图代码,我可以说它也不会返回预期的页面:您将从控制器返回单个字符串项作为模型,但您的
DisplayStudents.aspx
需要一个集合。您还应该更正您的视图(因此它将接受单个字符串作为模型)或者从控制器返回一个IEnumerable
,方法是从name
的LINQ表达式中删除.First()
,因为重载需要一个对象(如果它是数据)和一个字符串(如果在中传递视图的名称)
改用这个:
返回视图((对象)名称);
如果在控制器中设置断点,是否达到了预期的操作?能否显示路由和请求的url?这看起来像是路由问题。
return View("DisplayStudents", name);