果园新手。我试图设置自定义表单没有成功。我也一直在使用形状建模器。 我创建了一个New ContentType并添加了字段f1,f2,f3 ......我创建了一个CustomForm。现在我想在某些字段周围包含不同的div,如
<div class="g1">
f1
f2
</div>
<div class="g2">
f4
f6
</div>
BTW我试过这个结构但没有成功:
dynamic content = @Model.Content;
<div class="g1">
if(@content.ContentTypeName.f1 || @content.ContentTypeName.f2)
{ @Dispaly(...)
}
</div>
可以在content.edit.cshtml视图中完成吗? 如果是这样,请提供一个例子。 感谢
另外,有没有办法在运行时反映Model.Content的属性?
答案 0 :(得分: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>
答案 1 :(得分:1)
通常在Orchard中,您可以覆盖部件和字段的模板,而不是整个内容项的模板。形状跟踪可以帮助您确定可以用于每个字段的替代模板,甚至可以生成具有默认代码的文件供您修改。
此外,Model.Content(如果有的话)将是区域,而不是内容项。根据您所在的模板,您可以使用Model.ContentItem。
答案 2 :(得分: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>