Asp.net mvc 如何在使用Box时构造网站

Asp.net mvc 如何在使用Box时构造网站,asp.net-mvc,partial-views,Asp.net Mvc,Partial Views,我正在设计一个网页,需要有框(部分视图)的左侧和右侧的主要内容。这些框将包含额外的信息,就像这样。我想分组的网页,所以某些网页将有一些框,而另一组网页将有其他框 不过,我对如何在MVC.NET中最好地实现这一点表示怀疑 我看到两种选择: 1) 在每一页上,我都包含了我需要的部分控件 2) 创建子母版页,我可以在其中分配页面,并且可以控制应显示哪些局部视图 有没有其他更聪明或更容易实现的方法呢?因此页面上的框与页面内容严格相关,因此我将创建一个包含3个内容占位符的母版页(Site.master):

我正在设计一个网页,需要有框(部分视图)的左侧和右侧的主要内容。这些框将包含额外的信息,就像这样。我想分组的网页,所以某些网页将有一些框,而另一组网页将有其他框

不过,我对如何在MVC.NET中最好地实现这一点表示怀疑

我看到两种选择:

1) 在每一页上,我都包含了我需要的部分控件

2) 创建子母版页,我可以在其中分配页面,并且可以控制应显示哪些局部视图


有没有其他更聪明或更容易实现的方法呢?

因此页面上的框与页面内容严格相关,因此我将创建一个包含3个内容占位符的母版页(Site.master):


RenderAction
创建新请求以呈现部分页面。它可能更容易使用,但我会使用
RenderAction
来显示与主视图不共享任何信息的框(例如,如果您想显示“时钟”框、“最新下载”框或“登录”框)

将内容放入页面侧栏的方法有很多

  • 构建不同的母版页,每个母版页包含不同的侧边栏内容子集。我将使用RenderAction来实现这一点,而不是RenderPartial,这样您就不必担心MVC解决方案中的每个ActionResult负责将内容发送到这些部分
  • 在母版页和RenderAction的ActionResult中设置一个RenderAction,让它检查调用控制器和/或ActionResult(都包含在HttpContext中)。基于此,您可以有条件地发回内容,并有条件地在局部视图中呈现它
  • <asp:ContentPlaceHolder ID="LeftContent" runat="server" />
    <asp:ContentPlaceHolder ID="MainContent" runat="server" />
    <asp:ContentPlaceHolder ID="RightContent" runat="server" />
    
    <asp:Content runat="server" ContentPlaceHolderID="RightContent">
        <% Html.RenderPartial("RelatedTagsInfo", ViewData['RelatedTagsInfoModel']) %>
        <% Html.RenderPartial("RelatedQuestionsInfo", ViewData['RelatedQuestionsModel']) %>
        <asp:ContentPlaceHolder ID="RightContentSubcontent" runat="server" />
    </asp:Content>
    
    <asp:Content runat="server" ContentPlaceHolderID="RightContent">
        <% Html.RenderAction("RelatedTagsInfo", "Question", new { id = Model.Id} ) %>
        <% Html.RenderAction("RelatedQuestionsInfo", "Question", new { id = Model.Id} ) %>
        <asp:ContentPlaceHolder ID="RightContentSubcontent" runat="server" />
    </asp:Content>