2017-09-11 11 views
0

フィールドのテーブルを表示するカスタムタイプの代替ビューを作成しています。ほとんどのフィールドは次のような形式で表示されます:代替のビューにフィールドを埋め込む

@Display(Model.ContentItem.CustomType.CustomField.Value) 

しかし、いくつかのフィールドは完全なフィールドビューを持つことをお勧めします。たとえば、フィールド値自体の横にアドレスをpingした結果を表示するIPアドレスフィールド。

@Display.Fields_CustomField(Model.ContentItem.CustomType.Address) 

が、モデル値で、そのコールの結果は、このような代わりModel.ContentField.Valueを呼び出すために必要ように、ドライバを介して表示されたときよりも異なっている:

私はこの形状を使用して表示することができることを見出しModel.Valueの。

var model = Model.ContentField ?? Model; 
var settings = Model.Settings ?? Model.PartFieldDefinition.Settings; 

し、その後、より複雑なチェック:

bool customFieldSetting = settings.GetType() == typeof(CustomFieldSettings) ? 
    settings.CustomSetting : 
    bool.Parse(settings["CustomFieldSettings.CustomSetting"]); 

は私のカスタムフィールドは、これらの値の複数の場所を確認するために書き換えることができますが、このロジックを持つ多くのフィールドを変更したときには不便なソリューションです。

シェイプのフィールドを完全に表示する方法はありますか?

答えて

1

あなたはコンテンツアイテムのテーブルを表示していると思いますか?私はこれを行う最も簡単な方法は、すべてのフィールドを自分のゾーンに送ることだと思います。だからあなたのタイプの代替ではこのようなものがあります:

<tr> 
    <td>@Display(Model.Column1)</td> 
    <td>@Display(Model.Column2)</td> 
    </tr> 

をそして、このような配置を持っている:あなたがに見ることができる

<Place Fields_Text-FirstName="Column1:1" 
    Fields_Text-LastName="Column2:1" /> 

別のオプションは、独自のカスタム実装でゾーンのレンダリングを追い越して、レンダリングされた各図形の間にテーブルの列マークアップを追加してください

+0

私はあなたが具体的に配置を定義できるかどうか分かりませんでした。 Column1のようなものはどのように定義されていますか? – ub3rman123

+0

実際の定義はありません。Column1の形状を表示するだけです – Hazza

+1

これはhttp://arkleseizure.net/what-the-hell-is-an-item-templateに役立ちます – Hazza

関連する問題