我已经在Umbraco上有一个模板,我已经设置了一个局部视图,以检查是否有一个英雄单位选择的页面。我想检查这个部分是否将任何内容发送到页面中,如果不是,我想呈现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总是为空。
发布于 2013-03-14 16:28:25
另一种方法是使用jquery,你有一个包装器div,你把你的部分内容放到其中,使用jquery在加载时检查div的内容是空的,如果它是渲染其他2个div,否则渲染一个。
发布于 2013-08-30 22:07:54
我不相信分音是这样用的。因为看起来你想从函数中获取一个标量值,所以我认为helper函数是你最好的选择,并且可以在你的应用中全局使用。
添加一个文件到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助手,但这仅取决于您的用例。这个helper函数或一组函数,你也会在你的partial中使用,以保持它的一致性。
https://stackoverflow.com/questions/15001963
复制相似问题