在备用视图中嵌入字段

时间:2017-09-11 17:36:15

标签: c# orchardcms

我正在构建一个显示字段表的自定义类型的备用视图。大多数字段都可以使用以下内容显示:

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

但是,我希望在一些领域中拥有完整的视野。例如,一个IP地址字段,用于显示将地址与字段值本身一起ping的结果。

我发现可以使用以下方式显示此形状:

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

但随后该调用导致Model值与通过驱动程序显示的值不同,例如需要调用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 个答案:

答案 0 :(得分:1)

我猜你现在正在显示内容项目表?我想说最简单的方法是将所有字段发送到自己的区域。所以在你的类型中,替代品有这样的东西:

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

并有这样的位置:

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

您可以研究的另一个选项是使用您自己的自定义实现超越区域的渲染,并在呈现的每个形状之间添加表格列标记