ASP.NET MVC3 - Html.RenderAction不起作用

时间:2012-05-22 20:34:16

标签: asp.net-mvc-3

我正在开发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

3 个答案:

答案 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"); }