如何在MVC视图中使用jquery / ajaxvalidation空格

我有一个MVC视图,其中包含一个表单,现在需要validation在特定文本字段中输入的数据。 我只需要确保没有空格。 有人可以在我看来使用jquery / ajax脚本给我一个表单validation的例子。

将validation构建到视图模型的一部分中可能是个好主意,因此您可以在模型中使用以下内容:

[RegularExpression(@"^[\S]*$", ErrorMessage = "White space found")] public string MyField {get;set;} 

然后,您可以在视图中执行以下操作:

 @Html.TextBoxFor(model => Model.MyField , new { }) @Html.ValidationMessageFor(model => Model.MyField) 

要使客户端工作,您必须启用客户端validation和不显眼的JS,您可以通过在主web.config部分中设置以下内容来执行此操作。

   

您还需要将jquery.validate.jsjquery.validate.unobtrusive.js文件放入您的页面。 在MVC3中创建新项目时,它们都应捆绑在scripts文件夹中。

   

最后在服务器端操作方法上,你会想要一些看起来像这样的东西:

  [HttpPost] public ActionResult Index(Thing myThing) { if (ModelState.IsValid) { //Do some work in here because we're all good return RedirectToAction("MyOtherAction"); } //Oops the validation failed so drop back to the view we came from return View(); } 

在客户端JS依赖谁是危险的,因为理论上可以绕过导致数据损坏到达服务器端。

上面的正则表达式应该做你想要的validation,但我的正则表达式技能有点生疏。

在这里找到此代码:

 $(document).ready(function(){ jQuery.validator.addMethod("noSpace", function(value, element) { return value.indexOf(" ") < 0 && value != ""; }, "No space please and don't leave it empty"); $("form").validate({ rules: { name: { noSpace: true } } }); }) 

我建议将空白区域检查作为模型validation的一部分。 用于此目的的简单且可重用的validation属性如下所示:

 public class NoWhiteSpaceAttribute : ValidationAttribute { public override bool IsValid(object value) { var strValue = value as string; if (!string.IsNullOrEmpty(strValue)) { return !strValue.Contains(" "); } return true; } } 

用法示例:

 [NoWhiteSpace(ErrorMessage = "No spaces allowed")] public string UserName { get; set; }