1

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 が常に null であると考えているようです。

4

2 に答える 2

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 ヘルパーを作成することもできますが、これはユース ケースによって異なります。このヘルパー関数または関数のセットは、パーシャルでも使用して、すべての一貫性を保つことができます。

于 2013-08-30T14:07:53.567 に答える