【问题标题】:Umbraco MVC Check is Partial has contentUmbraco MVC Check is Partial 有内容
【发布时间】:2013-02-21 12:11:09
【问题描述】:

我有一个关于 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 始终为空。

【问题讨论】:

  • 我添加了一个答案,如果您仍然遇到此问题或在未来的项目中,它可能会对您有所帮助。

标签: asp.net-mvc razor umbraco


【解决方案1】:

另一种方法是使用 jquery,您有一个包装器 div,您可以将部分内容放入其中,使用 jquery 在加载时检查 div 的内容是否为空,如果是则呈现另一个2个div的else渲染那个。

【讨论】:

    【解决方案2】:

    我不相信以这种方式使用部分。因为您似乎正在尝试从函数中获取标量值,所以我认为辅助函数是您最好的选择,并且可以在整个应用程序中全局使用。

    在 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 帮助程序,但这仅取决于您的用例。您将在部分中使用此辅助函数或一组函数,以使其保持一致。

    【讨论】:

      猜你喜欢
      • 2016-04-24
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多