在MVC4中,如何在主视图中呈现局部视图?

5

我在Views/Shared文件夹下有4个视图。

  1. Attendance Track.cshtml(主视图)
  2. _Attendance.cshtml(局部视图)
  3. _Leaves.cshtml(局部视图)
  4. _Efforts.cshtml(局部视图)

试图在主视图中呈现3个局部视图,但无法呈现。不知道哪里出了问题。 在主视图中呈现局部视图的代码:

<div id="RenderAttendance">
 @Html.Partial("~/Views/Shared/_Attendance.cshtml");
</div>
<div id="RenderLeaves" >
 @Html.Partial("~/Views/Shared/_Leaves.cshtml");
</div>
<div id="RenderEfforts" >
 @Html.Partial("~/Views/Shared/_Efforts.cshtml");
</div>

“无法渲染”是什么意思?有错误信息吗?还是视图在页面上没有显示出来?此外,这些视图是否强类型? - Andrei
视图在页面上没有显示。但是当主视图控制器中提到名称时,部分类视图会被渲染。 - Lalita
它不是强类型视图。当我尝试设置断点时,它不接受它。(无法在此处设置断点) - Lalita
对于共享的局部视图,无需提供路径,因为默认情况下会在共享文件夹中搜索。 - Girish Sakhare
@Girish:尝试了解决方案:在用户代码中发生了类型为“System.InvalidOperationException”的异常,但未处理。找不到部分视图'_Attendance.cshtml',或者没有视图引擎支持搜索的位置。但_attendance.cshtml位于共享文件夹下。 - Lalita
显示剩余7条评论
2个回答

3

嗨,请尝试像下面这样:

<div id="RenderAttendance">
 @Html.Partial("_Attendance");
</div>
<div id="RenderLeaves" >
 @Html.Partial("_Leaves");
</div>
<div id="RenderEfforts" >
 @Html.Partial("_Efforts");
</div>

注意:如果您的局部视图包含模型类,请尝试以下操作。
<div id="RenderAttendance">
 @Html.Partial("_Attendance", new ModelClassName());
</div>
<div id="RenderLeaves" >
 @Html.Partial("_Leaves", new ModelClassName_2());
</div>
<div id="RenderEfforts" >
 @Html.Partial("_Efforts", new ModelClassName_3());
</div>

嗨,RenderAttendance 正常工作,但另外两个部分视图没有渲染。 - Lalita
你的解决方案对我很有效。非常感谢你,@Aravindan。 - Lalita

1
我的部分视图被命名为“Grid”,位于“Views”目录下的名为“Control”文件夹中。
我必须使用:
@Html.Partial("/Views/Control/Grid")

一旦我这样做了,MVC就能够加载它了。
是的,我意识到我应该在我的部分视图前加下划线,但因为我将它们全部组织在“Control”文件夹下,这是我表示它们目的的方式。
当我从Web Forms迁移到MVC时,把部分视图看作可重用的自定义用户控件,添加到完整页面视图中对我很有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接