ブール型プロパティのテンプレートの定義に関する多くのSO投稿を読みまし@Html.DisplayFor
たが、それらを明確に理解できませんでした。あなたの質問はこれに終わり、それを把握した後、私はそれを実装するために必要なすべてのステップを含む新しい答えを追加することにしました。他の人にも役立つかもしれません。
1.テンプレートの作成
最初に、以下にinパスを追加する必要がありPartial View
ます(パスは非常に重要です)。
Views/Shared/DisplayTemplates/
たとえば、次のようPartial View
に名前を付け_ElementTemplate
て入力します。
<span>
@(@Model ? "Yes" : "No")
</span>
2.モデルへのUIHintの追加
とを接続するには、モデルクラスに次のような属性を追加する必要がありproperty
ます。template
UIHint
[UIHint("_YesOrNoTemplate")]
public bool MyProperty { get; set; }
3.ビューで@Html.DisplayNameForを使用する
このプロパティが必要なすべてのビューで、以下のコードを使用できます。
<div>
@Html.DisplayFor(modelItem => item.MyProperty)
</div>
出力
上記のコードは、私の例では以下のコードにレンダリングされます(if (MyProperty == true)
):
<div>
<span>
Yes
</span>
</div>
属性の設定
設定id
またはその他のhtml属性については、次のようにModelMetadataを使用できます。
<span id="@ViewData.ModelMetadata.PropertyName">
@(@Model ? "Yes" : "No")
</span>
属性付きの出力
<div id="MyProperty">
<span>
Yes
</span>
</div>