Pat*_*ins 38 c# asp.net asp.net-mvc asp.net-mvc-3
我的_Layout.cshtml中有一个名为"_Header.cshtml"的标题的共享视图.
我想从数据库中显示文本和图像,所以我需要我的控制器进入数据库并将其返回到_Header.cshtml.
我怎么能这样做,因为所调用的控制器总是与用户去的每个页面不同.有没有办法让控制器使用共享视图?
这是_Layout.cshtml
<div id="header">
<div id="title">
@Html.Partial("_Header")
</div>
<div id="logindisplay">
@Html.Partial("_CultureChooser")
<br />
@Html.Partial("_LogOnPartial")
</div>
<div id="menucontainer">
@Html.Partial( "_MenuPartial")
</div>
</div>
<div id="main">
@RenderBody()
<div id="footer">
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 56
在contoller操作中,您可以指定视图的名称:
public class MenuController : Controller
{
[ChildActionOnly]
public ActionResult Header()
{
var model = ... // go to the database and fetch a model
return View("~/Views/Shared/_Header.cshtml", model);
}
}
Run Code Online (Sandbox Code Playgroud)
现在在你_Layout.cshtml
而不是@Html.Partial("_Header")
这样做:
@Html.Action("Header", "Menu")
Run Code Online (Sandbox Code Playgroud)
... 1年后,我想向Dimitrov回答一件事.您可以使控制器更清洁:
public class MenuController : Controller
{
[ChildActionOnly]
public ActionResult Header()
{
var model = ... // go to the database and fetch a model
return Partial("_Header", model);
}
}
Run Code Online (Sandbox Code Playgroud)