【发布时间】:2012-03-27 20:29:43
【问题描述】:
我有一个案例,复杂的局部视图需要不同的字段验证,具体取决于使用局部视图的位置。
我想我可以通过让局部视图将接口作为模型类型并基于该接口实现两个不同的 ViewModel 来解决这个问题。两个 ViewModel 中的数据注释会有所不同。然后,我会为局部视图提供正确 ViewModel 的实例。
但我发现唯一能识别的注释是界面本身的注释。接口实现 ViewModel 类上的 DA 被忽略,即使这些是作为模型传递的对象。所以我的计划行不通。
有没有办法解决这个问题?更好的方法?如果可以避免的话,我不希望将部分视图拆分为单独的视图。
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 语句管理可选部分的呈现(或不呈现),但它并没有做任何棘手的事情。
【问题讨论】:
-
你能发布部分视图吗?
-
@mattytommo 这页很长,但我会尝试提供一个缩写版本。
标签: asp.net-mvc-3 interface data-annotations partial-views