ASP.NET MVC 3 View Engine无法使用.cshtml识别PartialView

时间:2012-08-20 13:58:31

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

下图显示了Partial View GetMovieTypes.cshtml文件夹中的Shared

我使用EmployeeController的索引视图中的行@Html.Partial("GetMovieTypes.cshtml")调用局部视图

  

问题是当我使用索引操作调用员工控制器时出现服务器错误

     

找不到部分视图'_GetMovieTypes.cshtml'或没有查看   引擎支持搜索的位置。以下地点是   搜寻:

     

〜/地区/职员/查看/雇员/ GetMovieTypes.cshtml.cshtml

但是当我重命名PartialView to GetMovieTypes.cshtml.cshtml时,它可以正常工作

为什么ViewEngine强制我两次添加.cshtml扩展程序

enter image description here

4 个答案:

答案 0 :(得分:7)

删除.cshtml部分:

@Html.Partial("GetMovieTypes")

答案 1 :(得分:4)

您只需致电

@Html.Partial("GetMovieTypes")

Dot 未被MVC绑定识别为扩展名分隔符。所以,如果你写

“GetMovieTypes.cshtml”它搜索完全该名称,加上 cshtml扩展名。

答案 2 :(得分:2)

您应该将代码调用更改为

@Html.Partial("_GetMovieTypes")

因为那是你的View的名字,我一直这样做。

没有必要提及扩展名,只有当您从Controller拨打电话时才会这样做。

我自己的例子:

enter image description here

答案 3 :(得分:2)

您需要删除.chtml扩展程序:

@Html.Partial("GetMovieTypes")

你也可以在“父”视图中传递你所拥有的模型,如下所示:

@Html.Partial("GetMovieTypes", MovieTypesModel)

使用此方法,您的视图及其部分具有相同的模型和信息

*也许我错了,但我认为你的视图名称也有一个下划线,所以你应该这样称呼:

@Html.Partial("_GetMovieTypes", MovieTypesModel)