我在Umbraco上有一个模板,我设置了一个部分视图,检查是否为页面选择了英雄单位。 我想检查这个Partial是否正在向页面发送任何内容,如果不是我想渲染1个div,如果选择了一个英雄单位,我想要2个div。
我的代码目前是;
var heroUnit = @Html.Partial("HeroUnits",@Model.Content);
@if(heroUnit != null)
{
<div class="span6">
@Html.Raw(Model.Content.GetPropertyValue<string>("bodyText"))
</div>
<div class="span3">
@Html.Partial("HeroUnits",@Model.Content);
</div>
} else {
<div class="span9">
@Html.Raw(Model.Content.GetPropertyValue<string>("bodyText"))
</div>
}
这段代码似乎认为HeroUnit始终为null。
答案 0 :(得分:0)
另一种方法是使用jquery,你有一个包装器div,你将你的部分内容放入,使用jquery加载你检查div的内容是空的,如果它然后渲染另一个2 div的其他渲染。
答案 1 :(得分:0)
我不相信部分是以这种方式使用的。因为看起来你试图从函数中获取标量值,我认为辅助函数是你最好的选择,并且可以在整个应用程序中全局使用。
将文件添加到App_code:HeroHelper.cshtml
然后创建你的功能:
@using Umbraco
@using Umbraco.Core
@using Umbraco.Web.Models;
@using Umbraco.Core.Media;
@using Umbraco.Core.Models;
@using Umbraco.Web;
@using Umbraco.Web.umbraco;
@functions {
public static bool HasHero(IPublishedContentNode node)
{
// this contains your logic, I'll make somethingup
return node.HasValue("HereUnit");
}
}
现在,以下内容将有效:var heroUnit = HeroHelper.HasHero(Model.Content);
您还可以为此创建一个html帮助器,但这取决于您的用例。您在部分中使用的辅助函数或函数集也可以保持一致。