【问题标题】:Best Approach: Mutliple content place holders in MVC最佳方法:MVC 中的多个内容占位符
【发布时间】:2011-11-13 13:56:09
【问题描述】:

我正在将一个 ASP.Net Web 表单项目转换为 MVC3。母版页包含位于不同位置的多个内容占位符。

我用@RenderBody() 替换了第一个内容占位符,但我对如何处理第二个内容感到困惑。

一种方法可能是分离视图并为每个内容占位符方法放置一个@Html.RenderAction()。有没有更好的方法?

【问题讨论】:

    标签: asp.net asp.net-mvc vb.net asp.net-mvc-3 razor


    【解决方案1】:

    Razor 已获得 sections 的理解以代替 asp.net webforms ContentPlaceHolders。看看this介绍链接。

    【讨论】:

    • 感谢您的回答。此链接可能是更好的阅读部分 (weblogs.asp.net/scottgu/archive/2010/12/30/…)。请将此包含在您的答案中以供将来的问题...
    • 对不起,我刚刚更正了。这是我的复制粘贴错字:)
    【解决方案2】:

    您可以使用部分。例如,要有一个脚本部分,在 layout.cshtml 的 head 标签中,您可以指定

    <head>    
    <title>@ViewBag.Title</title>    
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />    
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>    
    @RenderSection("scripts", false);
    </head>
    

    在任何视图中,您现在都可以添加一个脚本部分来注入您的脚本:

    @section scripts{    
    <script src="@Url.Content("~/Scripts/myscript.js")" type="text/javascript"></script>
    }
    

    “false”参数告诉 MVC 如果子页面上存在该部分,则呈现该部分,如果没有调用,则不执行任何操作

    【讨论】:

    • +1 你提供了正确的答案,但我选择@archil 的答案作为答案,因为他首先回答...
    • @Naveed Butt:NP。重要的是你解决了你的问题;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2012-09-25
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多