查看渲染问题

时间:2010-09-03 13:35:01

标签: model-view-controller asp.net-mvc-2 views master-pages

在我的应用程序中,我有两个母版页,它们用于各种不同的情况。假设一个主视图只呈现页面的上半部分,另一个主视图呈现上半部分和一个导航栏。我们使用视图模型将数据传递给这些母版页

现在在我的控制器中,我的索引操作引用带有导航栏的MasterPage和不需要导航栏的详细信息选项卡。但是现在每当我尝试渲染详细信息页面时我的网站在Site.MasterWithNavigation上崩溃了,虽然它现在涉及我的详细信息视图。我不知道它是如何落在那里的。

在附加调试器并检查pae崩溃的位置时,它显示它在Site.MasterWithNavigation崩溃并且在检查调用堆栈时只有一个条目将我带到我的其他Site.Master并显示异常随机局部视图渲染线。我认为只是因为它让我评论出这条线,并再次看到崩溃发生在我渲染HTML输入元素的不同行。

我知道为什么我会看到这个吗?注意我们有其他页面使用第二个母版页但由于某种原因它们都在一个名为WhateeverDetailsController的不同控制器中。当我们在同一个控制器中的两个不同动作中使用两个不同的母版页时,您认为存在问题吗?

1 个答案:

答案 0 :(得分:0)

我不确定您为什么一起使用多个母版页,但我只使用一个母版页,并将相关标签公开到所有页面,例如:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Title
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ScriptContentHolder" runat="server">
    <%= Html.Script("jquery-1.4.4.min.js")%>
    <%= Html.Script("jquery-ui-1.8.7.min.js")%>
    <%= Html.Script("MicrosoftAjax.js")%>
    <%= Html.Script("MicrosoftMvcAjax.js")%>
    <%= Html.Script("MicrosoftMvcValidation.js")%>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MenuContent" runat="server">
    <% Html.RenderPartial("IManagerLinks"); %>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="MainContent" runat="server">
    <div id="leftContent50">
        <h4>add a new comment</h4>
        <% Html.RenderPartial("AddCommentUC", Model.AddComment); %>
    </div>
    <div id="rightContent50">
        something else here
    </div>
    <br style="clear: both;" />
</asp:Content>

您可以非常轻松地对页面的顶部,侧面部分和标题执行相同的操作,并使用css来设置所有内容。