【问题标题】:Can I populate a ContentPlaceHolder in a master page from within a Razor Partial View?我可以在 Razor 局部视图中填充母版页中的 ContentPlaceHolder 吗?
【发布时间】:2011-10-13 17:07:00
【问题描述】:

我在 mvc3 中使用典型的内置视图引擎(它有合适的名称吗?)用于视图和母版页,它包括 .aspx 页面上的 Razor 部分视图。在母版页中,有一个ContentPlaceHolder,ID 为"ScriptContent"

我希望能够从 Razor 局部视图中填充 ContentPlaceHolder,但我认为这是不可能的。有谁知道这是否可能以及我将如何去做?

我已经尝试过像这样在局部渲染它​​,但这不起作用。

@section ScriptContent {
    ... content ...
}

【问题讨论】:

    标签: c# asp.net asp.net-mvc-3 razor partial-views


    【解决方案1】:

    这将非常困难,以至于我建议寻找另一种方法:(。我希望它更容易,但这些是将新视图引擎集成到现有遗留系统中的复杂性。

    如果您真的想尝试一下,先给您一个先机:您可能需要为您的 Razor 内容页面创建一个从 WebViewPage 继承的自定义基类,重写一些方法(老实说,我不太熟悉有了这个方面,所以你需要调试以遵循管道),而不是将 Layout 属性视为布局页面的路径,而是将其视为母版页。然后您需要实例化母版页并以某种方式将 Sections(由 Razor 解析器转换为对 DefineSection 的调用,并且应该存储在基类某处的 Dictionary 中)转换为 Content 控件并将它们填充到母版页。

    如果我在这一点上还没有让你感到困惑,你也许可以解决这个问题,但老实说,我会避免它。

    附:我们将较旧的视图引擎称为“ASPX”,基于其文件扩展名;)。

    【讨论】:

    • 很好的答案,谢谢!是的,我最终使用了另一种方法,但 idk,实施起来可能很有趣。想想那里有几十个会使用它的开发人员! :)
    • 我是刚刚找到这个答案的数十名开发人员之一。悲伤的时刻......
    猜你喜欢
    • 1970-01-01
    • 2013-10-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多