【问题标题】:ASP.NET MVC 3 View Engine does not recognise PartialView with .cshtmlASP.NET MVC 3 视图引擎无法识别带有 .cshtml 的 PartialView
【发布时间】:2012-08-20 13:58:31
【问题描述】:

下图显示Partial View GetMovieTypes.cshtml 位于Shared 文件夹中

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

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

未找到部分视图“_GetMovieTypes.cshtml”或没有视图 引擎支持搜索的位置。以下位置是 搜索:

~/Areas/Staff/Views/Employee/GetMovieTypes.cshtml.cshtml

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

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

【问题讨论】:

  • Dang 在发布这个问题后立即注意到我的愚蠢错误,大家干杯

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


【解决方案1】:

删除.cshtml 部分:

@Html.Partial("GetMovieTypes")

【讨论】:

    【解决方案2】:

    你只需要调用

    @Html.Partial("GetMovieTypes")
    

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

    “GetMovieTypes.cshtml”它搜索正是那个名字,加上cshtml扩展。

    【讨论】:

      【解决方案3】:

      您应该将代码调用更改为

      @Html.Partial("_GetMovieTypes")
      

      因为这是您的视图的名称,所以我一直这样做。

      无需提及分机,仅当您从您的Controller 拨打电话时。

      我自己的例子:

      【讨论】:

        【解决方案4】:

        您需要删除 .chtml 扩展名:

        @Html.Partial("GetMovieTypes")
        

        您也可以像这样在“父”视图中传递您拥有的模型:

        @Html.Partial("GetMovieTypes", MovieTypesModel)
        

        通过这种方法,你的视图和它的局部视图具有相同的模型和信息

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

        @Html.Partial("_GetMovieTypes", MovieTypesModel)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-11
          • 1970-01-01
          • 1970-01-01
          • 2010-12-20
          • 2012-06-24
          相关资源
          最近更新 更多