如何在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.js
和jquery.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; }