使用ajax使用数据注释返回部分视图进行验证的表单

时间:2011-12-08 18:23:16

标签: jquery asp.net-mvc data-annotations

我有一个带有登录表单的部分视图(带有用户名和密码字段)和一个带有两个属性的视图模型,其中包含DataAnnotations属性[Required]

在客户端,我有一个正确配置的表单,通过ajax发布,实际上正确地到达了操作。

你能告诉我这两个选项中的任何一个是否是ajax表格帖子的最佳做法,使用数据注释来验证*或者我是完全错误的? (我在与此问题相关的代码中添加了一些注释)

选项A

if (ModelState.IsValid)
{
   //Do whatever with database, session, etc...
   return Json(new { error:false; }); 
}
else
{
   //The html returned by this code comes with css-class="input-validation-error"
   //for elements whose values didnt pass the validation
   //should i use Jquery in client to replace actual html of the partial view
   //by this resulting html?????
   return PartialView("Login", usersubmitted);
}

选项B

if (ModelState.IsValid)
{
   //Do whatever with database, session, etc...
   return Json(new { error:false; }); 
}
else
{
   //I could return a Json array with all validation errors that happened
   //and in client side use Jquery to add the css-class "input-validation-error"
   //to those html elements whose id matches with the values in returned array. 
   return Json(
                 new{
                      {validation-error:"UserName"},
                      {validation-error:"Password"}
                    }
               );
}

1 个答案:

答案 0 :(得分:1)

选项B将是我的偏好,因为它似乎通过将显示和渲染决策完全留在View本身的手中来保持视图和控制器之间关注点的更强分离。控制器只是通知View有问题的元素。