这是可能的剃刀帮手解决这个问题。这有点优雅,但它为我做了这份工作。
所以父视图定义一个帮手:
@helper HtmlYouWantRenderedInAPartialView()
{
<blink>Attention!</blink>
}
然后,当你渲染部分,你通过这个辅助函数
@Html.Partial("somePartial", new ViewDataDictionary { { "OptionalSection1", (Func<HelperResult>)(HtmlYouWantRenderedInAPartialView) } })
然后局部视图里面调用这个帮手像所以
<div>@ViewData.RenderHelper("OptionalSection1")</div>
最后,你需要有这个扩展方法来简化“调用”pa RT
public static HelperResult RenderHelper(this ViewDataDictionary<dynamic> viewDataDictionary, string helperName)
{
Func<HelperResult> helper = viewDataDictionary[helperName] as Func<HelperResult>;
if (helper != null)
{
return helper();
}
return null;
}
所以整点是要通过这个帮助的委托,然后在子视图的话来说,内容呈现得到您想要的地方。
子视图的最终结果是这样的
<div><blink>Attention!</blink></div>
什么解决办法?我有一个布局 - >页面 - >部分。当部分在那里时,我需要引用脚本/布局并将其加载到头部。任何非愚蠢的方式来做到这一点?无论如何,这个限制有什么意义? – Shimmy 2012-11-26 01:33:27
@Shimmy你可以尝试在ViewData中添加某种数据结构,以指定Layout页面应该引用哪些东西。 – marcind 2012-11-26 23:50:47