我有一个 Item 类。我有大约10-20个衍生物,每个衍生物包含不同类型的数据。现在谈到渲染不同类型的 Item,我被迫使用喜欢的:
<div>
@if (Model is XItem)
{
... rendering logic 1 ...
}
@if (Model is YItem)
{
... rendering logic 2 ...
}
@if (Model is ZItem)
{
... rendering logic 3 ...
}
... goes on and on forever ...
</div>
不幸 @Html.DisplayFor() 在这种情况下不起作用,因为 Model 是的类型 Item, DisplayTemplates\Item.cshtml 被展示。
由于相同的“if / is”链,HTML帮助程序也无济于事。
我可以在类本身中包含渲染逻辑,然后调用 @Model.Render() 但它们属于业务逻辑,而不是表示。这将是一种罪恶。
只有一个选项 @Html.Partial(Model.GetType().Name) 但感觉不对。你期待一个没有元魔法的解决方案。有没有更好的办法?