ASP中的验证.MVC 3.0

本文关键字:MVC 验证 ASP | 更新日期: 2023-09-27 18:17:54

我有一个模型类:

public class YearlyChageRate
{
    public int Year { get; set; }
    public double Rate { get; set; }
}

,我想检查Yeae是唯一的还是没有,在条件下,Year不是唯一的应用程序向用户显示错误消息。如何检查年度是否重复?

ASP中的验证.MVC 3.0

下面是一个很好的例子:http://tugberkugurlu.com/archive/asp-net-mvc-remote-validation-for-multiple-fields-with-additionalfields-property

这里也是:唯一的

MVC验证

你可以在你的模型中使用Remote属性来检查数据库中的唯一值。

Remote属性的官方示例:http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx

还有一个:http://www.a2zdotnet.com/View.aspx?Id=198

您可以在视图模型上使用[Remote]验证属性。

尽管您可以使用DataAnnotations属性进行验证,并使用[Remote]属性对DB进行检查,但这并不是一个很好的设计选择。

让我解释一下:

  • 数据访问是一个数据层问题
  • 验证是业务层的事情
  • 用户输入和反馈是ui问题

使用DataAnnotations,你是在1中混合3。它可以更快,但肯定不是很好的设计。

你可以尝试更严格的方法,像这样:

  • 在业务层有一个方法,将你的对象作为参数,使用你选择的验证框架在内部执行验证;
  • 只有当验证通过时,这个方法才会调用数据访问来持久化对象;
  • 这个方法将总是返回到UI的验证对象,加上字段/错误的集合,如果任何东西没有验证;
  • 当您在ui中读取该方法的输出时,如果没有错误,您可以显示成功页面,或者重新显示返回验证错误的表单。为此,强烈建议使用PRG pattern,因为您不应该在POST方法上显示页面。谷歌PRG pattern了解更多。MvcContrib有一个很好的ActionFilter,称为ModelStateToTempData,使PRG模式的实现变得微不足道。