Validation ASP.NET MVC 3中的干式远程验证

Validation ASP.NET MVC 3中的干式远程验证,validation,asp.net-mvc-validation,asp.net-mvc-3,Validation,Asp.net Mvc Validation,Asp.net Mvc 3,我已经读过大卫·海登的一篇很棒的文章 但是,这里介绍了如何启用远程(javascript)验证。如果用户禁用了javascript,即使数据无效,仍会发布帖子。因此,应该进行服务器端验证 我们怎样才能使这张支票尽可能干燥(不要重复你自己)?当然,在post操作中包含与远程验证操作中相同的检查代码(或者只是相同的调用)可以工作,但我想知道是否有一行或更优雅的代码可用 完全可以接受的答案包括“不,不可能做到”。) 这是“可以”做到的。。但您需要编写自己的自定义属性,该属性基本上为客户端发出,并经过服

我已经读过大卫·海登的一篇很棒的文章

但是,这里介绍了如何启用远程(javascript)验证。如果用户禁用了javascript,即使数据无效,仍会发布帖子。因此,应该进行服务器端验证

我们怎样才能使这张支票尽可能干燥(不要重复你自己)?当然,在post操作中包含与远程验证操作中相同的检查代码(或者只是相同的调用)可以工作,但我想知道是否有一行或更优雅的代码可用


完全可以接受的答案包括“不,不可能做到”。)

这是“可以”做到的。。但您需要编写自己的自定义属性,该属性基本上为客户端发出,并经过服务器端验证。对我来说,我只是将验证代码提取到一个方法中,然后在服务器上进行检查。 最近也出现了类似的情况:

我想知道是否有人不能从remote属性继承并添加自己的服务器端代码。隐马尔可夫模型。。也许我得试试这个


如果这里有人说他们已经这样做了,我会很高兴:)

这“可以”做到。。但您需要编写自己的自定义属性,该属性基本上为客户端发出,并经过服务器端验证。对我来说,我只是将验证代码提取到一个方法中,然后在服务器上进行检查。 最近也出现了类似的情况:

我想知道是否有人不能从remote属性继承并添加自己的服务器端代码。隐马尔可夫模型。。也许我得试试这个

如果这里有人说他们已经这样做了,我会很高兴:)

请参阅我的MSDN文章 当禁用JavaScript时,我使用HttpPost创建方法中的远程客户端验证代码来测试服务器端

[HttpPost]
    public ActionResult Create(CreateUserModel model) {

        // Verify user name for clients who have JavaScript disabled
        if (_repository.UserExists(model.UserName)) {
            ModelState.AddModelError("UserName", ValidationController.GetAltName(model.UserName, _repository));
            return View("Create", model);
        }
请参阅我的MSDN文章 当禁用JavaScript时,我使用HttpPost创建方法中的远程客户端验证代码来测试服务器端

[HttpPost]
    public ActionResult Create(CreateUserModel model) {

        // Verify user name for clients who have JavaScript disabled
        if (_repository.UserExists(model.UserName)) {
            ModelState.AddModelError("UserName", ValidationController.GetAltName(model.UserName, _repository));
            return View("Create", model);
        }

我已经这样做了,这是一个有点长的解决方案,所以可以在我的博客上找到:


我必须创建
RemoteAttribute
类的一个新子类,通过继承
DefaultModelBinder
创建我自己的自定义模型绑定器,然后使用反射调用控制器上的验证器。

我已经这样做了,这是一个有点长的解决方案,因此我的博客上提供了所有这些:


我必须为
RemoteAttribute
类创建一个新的子类,通过继承
DefaultModelBinder
创建我自己的自定义模型绑定器,然后使用反射调用控制器上的验证器。

我已经这样做了!我喜欢挑战:)我已经做到了!我喜欢挑战:)