MVC验证从一个模型到多个视图

时间:2013-08-05 12:33:11

标签: c# asp.net-mvc validation razor

我遇到一个问题,我有一个带验证的模型,需要在不同的视图上显示某些错误消息。目前,我的模型中的所有视图都出现验证错误。

我猜测有一种方法可以根据显示的视图设置单独的验证消息吗?

我的模型如下:

[Required(ErrorMessage = "Confirm name of item")]
public string ItemName { get; set; }
[Required(ErrorMessage = "Confirm Number of items")]
public int NumberOfItems { get; set; }

查看:

@using (Html.BeginForm())
{
@Html.ValidationSummary()
<table>
<tr>
<td>Name:</td> <td>@Html.TextBox("ItemsName")</td>
</tr>
<tr>
<td>Number:</td> <td>@Html.TextBox("NumberOfItems")</td>
</tr>
</table>

我只需要在另一个只有项目名称的视图中显示一条错误消息....

提前致谢

2 个答案:

答案 0 :(得分:1)

建议的方法是为每个视图设置一个模型,因为每个视图都有不同的验证要求。

数据注释验证静态编译到模型中,无法在运行时更改。这就是为什么每个视图都需要一个单独的模型。

您可以通过使用通用视图模型,然后为每个视图使用单独的元数据模型来解决这个问题。这些通常被称为“伙伴类”。

这里描述了这些:

http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validation-with-the-data-annotation-validators-cs

答案 1 :(得分:1)

为每个页面创建一个单独的ViewModel。

您不希望将整个模型(很可能通过ORM映射到数据库表)发送到您的View。但是为每个页面创建ViewModel,允许将来查看特定属性和变换(如日期,货币,计算等)。