为什么MVC将aspx附加到视图名称

时间:2017-07-10 17:09:24

标签: c# asp.net-mvc-4 razor

在我的控制器中,我定义了:

const string KList = "list.cshtml";

我调用Action方法:

public ActionResult All()
{
    var view = Empty();

    var model = new Model(); // some other code to get the model

    view = PartialView(KList, model);
    return view;
}

这是视图:

enter image description here

我收到了这个错误:

  

System.Web.HttpException:'执行处理程序的子请求时出错   'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper''。

     

InnerException: InvalidOperationException:找不到局部视图'list.cshtml'或者没有视图引擎支持搜索   位置。搜索了以下位置:

     

〜/查看/通信/ list.cshtml.aspx

     

〜/查看/通信/ list.cshtml.ascx

     

〜/查看/共享/ list.cshtml.aspx

     

〜/查看/共享/ list.cshtml.ascx

为什么将aspx和ascx附加到视图文件中?

1 个答案:

答案 0 :(得分:1)

视图引擎会将您传递给View()的参数带到控制器的文件夹中,查看具有相同名称的文件,并附带支持的扩展名,例如:

  • cshtml(剃刀引擎的一部分)
  • aspx(ASPX引擎)
  • ascx(用户控制)

因此,您不需要显式传递View()重载的扩展名,该扩展名将视图名称作为第一个参数。只需改变:

const string KList = "list.cshtml";

const string KList = "list";

我建议阅读this article解释两种视图引擎(Razor和ASPX)之间的差异。