Umbraco MVC Check is Partial有内容

时间:2013-02-21 12:11:09

标签: asp.net-mvc razor umbraco

我在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。

2 个答案:

答案 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帮助器,但这取决于您的用例。您在部分中使用的辅助函数或函数集也可以保持一致。