我有一个位于Shared / Header.aspx中的共享视图,我希望将其呈现为HeaderContent ContentPlaceHolder的一部分。我的母版页包含:
<asp:ContentPlaceHolder ID="HeaderContent" runat="server" />
我希望能告诉MVC使用Shared / Header视图填充该内容占位符,其中包含:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeaderContent" runat="server">
....
</asp:Content>
目前,在我想要填充HeaderContent的每个页面中(以及在某些页面上我不希望它),我这样做:
<asp:Content ID="Content2" ContentPlaceHolderID="HeaderContent" runat="server">
<% Html.RenderPartial("Header"); %>
</asp:Content>
有没有办法可以有效地执行上述操作,但是来自处理请求的Controller(或ViewPage的子类)?
答案 0 :(得分:0)
如果要从控制器执行此操作,则可以在ViewData中传递属性,该属性可以从布局页面中选取。例如。在控制器动作中:
ViewData["ShowHeader"] = true;
然后在布局页面中你可以说
<% if(ViewData["ShowHeader"] != null && ((bool)ViewData["ShowHeader"]))
{
Html.RenderPartial("Header");
} %>
这样你也不需要额外的内容占位符。