客户端
使用该
jQuery.validate库应该非常简单。
在
Web.config文件中指定以下设置:
<appSettings> <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavascriptEnabled" value="true"/> </appSettings>
建立视图时,您将定义如下内容:
@Html.LabelFor(Model => Model.EditPostViewModel.Title, true)@Html.TextBoxFor(Model => Model.EditPostViewModel.Title,new { @class = "tb1", @Style = "width:400px;" })@Html.ValidationMessageFor(Model => Model.EditPostViewModel.Title)注意: 这些需要在表单元素中定义
然后,您需要包括以下库:
<script src='@Url.Content("~/scripts/jquery.validate.js")' type='text/javascript'></script><script src='@Url.Content("~/scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>这应该能够使您进行客户端验证
资源资源
- http://msdn.microsoft.com/zh-CN/vs2010trainingcourse_aspnetmvccustomvalidation_topic5.aspx
服务器端
注意: 这仅用于
jQuery.validation库顶部的其他服务器端验证
也许这样的事情可能会有所帮助:
[ValidateAjax]public JsonResult Edit(EditPostViewModel data){ //Save data return Json(new { Success = true } );}当
ValidateAjax一个属性定义为:
public class ValidateAjaxAttribute : ActionFilterAttribute{ public override void onActionExecuting(ActionExecutingContext filterContext) { if (!filterContext.HttpContext.Request.IsAjaxRequest()) return; var modelState = filterContext.Controller.ViewData.ModelState; if (!modelState.IsValid) { var errorModel = from x in modelState.Keys where modelState[x].Errors.Count > 0 select new { key = x, errors = modelState[x].Errors. Select(y => y.ErrorMessage). ToArray() }; filterContext.Result = new JsonResult() { Data = errorModel }; filterContext.HttpContext.Response.StatusCode = (int) HttpStatusCode.BadRequest; } }}这样做是返回一个JSON对象,该对象指定所有模型错误。
示例响应将是
[{ "key":"Name", "errors":["The Name field is required."]},{ "key":"Description", "errors":["The Description field is required."]}]这将返回到您的错误处理回调
$.ajax调用
您可以遍历返回的数据以根据返回的键根据需要设置错误消息(我认为类似的东西
$('input[name="' + err.key +'"]')会找到您的输入元素


