У меня есть класс 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
отображается.
HTML-помощники не помогают ни из-за одной и той же цепи "if/is".
Я мог бы включить визуализацию в самих классах и вызвать @Model.Render()
, но они относятся к бизнес-логике, а не к представлению. Это был бы грех.
Существует только один параметр @Html.Partial(Model.GetType().Name)
, но он чувствует себя не так. Вы ожидаете решения без метамагии. Есть ли лучший способ?