0

果樹園の新入り。カスタム フォームのスタイルを設定しようとしていますが、うまくいきません。シェイプモデラーも使用しています。新しい ContentType を作成し、フィールド f1、f2、f3 を追加します... CustomForm を作成します。今、特定のフィールドの周りにさまざまなdivをラップしたいと思います

<div class="g1">
f1
f2
</div>
<div class="g2">
f4
f6
</div>

ところで、私はこの構成を試しましたが成功しませんでした:

        dynamic content = @Model.Content;
    <div class="g1">
        if(@content.ContentTypeName.f1 || @content.ContentTypeName.f2)
        { @Dispaly(...)
        }
    </div>

これは content.edit.cshtml ビューで実行できますか? もしそうなら、例を挙げてください。ありがとう

また、実行時に Model.Content のプロパティを反映する方法はありますか?

4

3 に答える 3

2

私がしたことは、Content_Edit 代替でローカル ゾーンを作成し、placement.info を使用してフィールドを再配置することでした。

Placement.info:

<Match ContentType="MyForm">
    <Place Fields_Input_Edit-FirstField="MyFirstZone:1"/>
    <Place Fields_Input_Edit-SecondField="MySecondZone:1"/>
</Match>

Content.Edit-MyForm.cshtml:

<div class="edit-item">
    <div class="edit-item-primary">
        @if (Model.Content != null) 
        {
            <div class="edit-item-content">
                <div class="first-zone">
                    @Display(Model.MyFirstZone)
                </div>
                <div class="second-zone">
                    @Display(Model.MySecondZone)
                </div>
            </div>
        }
    </div>
    ....
</div>
于 2013-05-27T13:20:55.297 に答える
1

通常、Orchard では、コンテンツ アイテム全体ではなく、パーツとフィールドのテンプレートをオーバーライドします。シェイプ トレーシングは、各フィールドに使用できる代替テンプレートを決定し、変更するデフォルト コードを含むファイルを生成するのに役立ちます。

また、Model.Content はコンテンツ アイテムではなくゾーンになります。使用しているテンプレートによっては、代わりに Model.ContentItem を使用できる場合があります。

于 2012-06-24T00:42:31.157 に答える
1

最後に解決策を思いつきましたが、かなり醜いですが、うまくいきます: Content_Edit に関連付けられた私の代替では:

@{
    dynamic content = Model.Content;
 }

<div class="g1">
@{
     foreach (var item in content)
     {
         if (item.Model.GetType().Name == "BooleanField")
         {
             if (f.Name == "f1" || f.Name == "f2")
             {
                 @Display(item);
             }
          }
      }
 }
</div>
<div class="g2">        
@{
     foreach (var item in content)
     {
         if (item.Model.GetType().Name == "BooleanField")
         {
             if (f.Name == "f4" || f.Name == "f6")
             {
                 @Display(item);
             }
         }
     }
 }
</div>
于 2012-06-25T01:36:07.173 に答える