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 重新排列字段

安置信息:

<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 回答