У меня есть случай, когда сложное частичное представление требует различной проверки полей в зависимости от того, где используется частичное представление.
Я подумал, что смогу обойти это, сделав частичное представление в качестве типа модели, используя интерфейс, и реализовав две разные модели представления на основе интерфейса. Аннотации данных в двух моделях представления будут разными. Затем я бы поставил экземпляр правильного ViewModel для частичного представления.
Но я обнаружил, что единственными аннотациями, которые распознаются, являются аннотации на самом интерфейсе. DA в классах ViewModel, реализующих интерфейс, игнорируются, даже если это объекты, которые передаются в качестве моделей. Так что мой план не работает.
Есть ли способ обойти это? Лучший подход? Я бы предпочел не разбивать частичное представление на отдельные представления, если я могу избежать этого.
ETA: это сокращенная версия частичного представления, согласно запросу:
@model IPerson
@Html.ValidationSummary(false)
<fieldset>
<table class="editForm">
<tr>
<td class="editor-label">
@Html.LabelFor(model => model.FirstName)
</td>
<td class="editor-field">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</td>
<td class="editor-label">
@Html.LabelFor(model => model.LastName)
</td>
<td class="editor-field">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</td>
</tr>
</table>
<fieldset>
Реальное частичное представление довольно длинное и содержит множество операторов @if, управляющих рендерингом (или нет) необязательных секций, но он не делает ничего сложного.