使用MVC3验证表单?

时间:2010-12-12 00:07:35

标签: asp.net-mvc entity-framework asp.net-mvc-3

在Hanselman / Guthrie编写的专业MVC一书中,他们展示了如何使用内置辅助方法和数据分析来验证表单。这有效,但需要很多手动样板代码。

是否有一种新的/更简单的方法来使用一些内置的管道来验证输入?

我正在使用具有实体框架的存储库模式。

谢谢!

2 个答案:

答案 0 :(得分:0)

正如其他人在评论中提到的那样,使用数据注释是一种新的/简单的验证方法。使用数据注释的好处是,您可以随时随地在应用程序中验证模型。我通常设置一个通用服务,如下所示:

public class ValidationService<T> : IValidationService<T>
{
    public List<ValidationResult> Validate(T obj)
    {
        var results = new List<ValidationResult>();
        Validator.TryValidateObject(
            obj,
            new ValidationContext(obj, null, null),
            results,
            true);
        return results;
    }
}

然后验证模型:

var service = new ValidationsService<MyClass>();
var errors = service.Validate(myobject);

考虑到您为这么少的代码获得了多少功能,数据注释非常强大,特别是当您考虑编写自己的验证属性是多么容易。

答案 1 :(得分:0)

如果您打算使用ViewModel,我会高度推荐使用来自souceforge的AutoMapper

我同意所有人的看法DataAnnotation很棒 - 它能够与jQuery集成以提供客户端验证,而无需编写一行jQuery就可以在一秒钟内将它卖给我!