我正在开发MVC应用程序中的布局页面。布局页面有 - 标题 - 内容 - 页脚
标题有ogo,欢迎信息,用户信息,其他几个链接。
我的问题是,我应该将标题设计为部分视图还是使用Rendoraction渲染它。 PartialView工作正常。但由于此数据不依赖于页面的其余部分,我想调用一个控制器操作,该操作返回带有自己模型的标题视图。
但HTML Rendor操作无效。
_Layout.cshtml
<body>
<div class="main_page">
<div id = "header">
*@Html.Partial("HeaderPartial", @Model)*@
@Html.Action("Header")
</div>
<div id="body">
@RenderBody()
</div>
<div id="footer">
</div>
</body>
的HomeController
public ActionResult Header()
{
Var VModel = //Create Model;
return View(VModel)
}
header.cshtml
@model VModel
<div>
</div>
执行处理程序的子请求时出错
System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper
答案 0 :(得分:5)
您的header.cshtml
看起来很少见,但如果您想将标题视图设为部分视图
第一:
Remove the layout using
@{
Layout = null;
}
第二个要在布局上渲染此视图,请使用
@Html.Action("Header","Home", new { foo= @someElement}) <-- this element send values to your action
答案 1 :(得分:3)
由于Html.Action
调用位于布局页面中,您必须指定控制器
@Html.Action("Header", "SomeController")
答案 2 :(得分:3)
如果您想在_Layout.cshtml
中使用RenderAction
,请执行此操作
@{ Html.RenderAction("Header", "Home"); }