我有一个 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)
但感觉不对。你期待一个没有元魔法的解决方案。有没有更好的办法?