1

我正在将一个经典的 ASP.NET 应用程序(ASPX 页面)移植到 ASP.NET MVC 3。目前我使用 ContentPlaceHolder 将内容动态添加到特定的 ASP.NET ASPX 页面。考虑以下:

<!DOCTYPE html>
<html>
    <head>
        <link href="MyStyleSheet.css" rel="Stylesheet" type="text/css" />
        <asp:ContentPlaceHolder ID="Styles">
        </asp:ContentPlaceHolder>
        <script type="text/javascript" src="jQueryAndOtherScripts.js"></script>
        <asp:ContentPlaceHolder ID="Scripts">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <div id="Container">
            <asp:ContentPlaceHolder ID="Content">
            </asp:ContentPlaceHolder>
        </div>
    </body>
</html>

因此,在上面的片段中,我有 3 个内容占位符,因此我可以添加基于单个页面的附加样式、脚本和内容。我这样做的原因是每个页面只加载与页面内容相关的样式、脚本(例如,如果它是登录页面,我可能会添加一个脚本来检查登录详细信息是否有效)

考虑以下 MVC 3 Razor View 片段:

<!DOCTYPE html>
<html>
    <head>
        <link href="MyStyleSheet.css" rel="Stylesheet" type="text/css" />
        <script type="text/javascript" src="jQueryAndOtherScripts.js"></script>
    </head>
    <body>
        <div id="Container">
            @RenderBody()
        </div>
    </body>
</html>

现在的问题... RenderBody() 替换<asp:ContentPlaceHolder ID="Content"></asp:ContentPlaceHolder>,但我用什么来代替<asp:ContentPlaceHolder ID="Styles"></asp:ContentPlaceHolder>and <asp:ContentPlaceHolder ID="Scripts"></asp:ContentPlaceHolder>

4

2 回答 2

3

为此目的有一些部分。

于 2012-07-17T10:48:49.090 回答
1

Sections是实现这一目标的方法。查看 ScottGu 关于该主题的这篇出色的帖子。

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

于 2012-07-17T10:53:48.057 回答