在我们的网站上,客户端可以在页脚列中添加不同的项目,即文本框。我们希望能够在一个局部视图中保留这些不同项目的代码,因为这些项目在网站的其他区域中使用,并且希望将代码重复保持在最低限度。
我想知道是否可以在foreach语句中嵌套Partial View,然后根据父foreach传递if语句。
我在名为Three_Column_Footer的部分视图中有以下代码:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var root = Model.Content.Site();
var thefooter = root.FirstChild("footer").Children();
}
<footer class="footer color-main">
<div class="container">
<div class="row">
@foreach(var foot in thefooter){
var childcol = foot.Children;
<div class="col-6">
@foreach(var item in childcol){
@Html.Partial("Footers/FooterStubs", item)
}
</div>
}
</div>
</div>
</footer>
我需要将以上foreach在Partial中识别为FooterStubs。可以使用@inherits Umbraco.Web.Mvc.UmbracoViewPage<IPublishedContent>
或Model.GetPropertyValue<IEnumerable<IPublishedContent>>
完成此操作 - 如果是这样的话?
谢谢!
答案 0 :(得分:0)
Partial
方法有一个接受additionalViewData
的重载。您可以利用它来提供您需要部分拥有的任何其他上下文:
@Html.Partial("Footers/FooterStubs", item, new ViewDataDictionary(ViewData)
{
{ "foot": foot }
});
然后在你的部分:
@{
var foot = ViewData["foot"] as YourFootClass;
}
我不确定你在偏爱中实际需要什么信息,但你实际上可以用这种方式添加你喜欢的任何内容。请记住,ViewData
是一个动态字典,因此您必须输入任何内容。