Validation ASP.NET MVC 3中的干式远程验证
我已经读过大卫·海登的一篇很棒的文章 但是,这里介绍了如何启用远程(javascript)验证。如果用户禁用了javascript,即使数据无效,仍会发布帖子。因此,应该进行服务器端验证 我们怎样才能使这张支票尽可能干燥(不要重复你自己)?当然,在post操作中包含与远程验证操作中相同的检查代码(或者只是相同的调用)可以工作,但我想知道是否有一行或更优雅的代码可用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操作中包含与远程验证操作中相同的检查代码(或者只是相同的调用)可以工作,但我想知道是否有一行或更优雅的代码可用 完全可以接受的答案包括“不,不可能做到”。) 这是“可以”做到的。。但您需要编写自己的自定义属性,该属性基本上为客户端发出,并经过服
完全可以接受的答案包括“不,不可能做到”。) 这是“可以”做到的。。但您需要编写自己的自定义属性,该属性基本上为客户端发出,并经过服务器端验证。对我来说,我只是将验证代码提取到一个方法中,然后在服务器上进行检查。 最近也出现了类似的情况: 我想知道是否有人不能从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
创建我自己的自定义模型绑定器,然后使用反射调用控制器上的验证器。我已经这样做了!我喜欢挑战:)我已经做到了!我喜欢挑战:)