我可以在Razor Partial View中填充母版页中的ContentPlaceHolder吗?

时间:2011-10-13 17:07:00

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

如果您真的想尝试一下,那么为您提供一个良好的开端:您可能需要为Razor内容页面创建一个继承自WebViewPage的自定义基类,覆盖一些方法(老实说,我不太熟悉使用该方面,您需要调试以遵循管道),以便不将Layout属性视为布局页面的路径,而是将其视为主页面。然后你需要实例化母版页并以某种方式转换Sections(由Razor解析器转换为对DefineSection的调用,并且应该存储在基类的某个地方的Dictionary中)到Content控件中并将它们填入Master Page。

如果到目前为止我还没有想到你的想法,你可能只能把它拉下来,但说实话,我会避免它。

P.S。我们将旧视图引擎称为“ASPX”,基于其文件扩展名;)。