在 ASP.NET MVC 中啟用 Unobtrusive JavaScript 功能,可以在運行時由服務器端根據Model中設置的驗證規則,自動生成客戶端驗證js代碼(結合jquery.validate)。這很好地解決了表單驗證時一次代碼,兩次驗證(客戶端+服務器端)的問題。
使用它很簡單,主要操作步驟如下:
1. 在web.config增加如下設置:
<appSettings> <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings>
2. 在NuGet中引用jquery.validate與jquery.validate.unobtrusive
3. 在頁面中添加js引用:
<script type="text/javascript" src="/scripts/jquery.validate.min.js"></script> <script src="/scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
4. 在model中添加驗證規則,示例代碼如下:
public class SignupUser { [Required(ErrorMessageResourceName = "DefaultRequireErrorMsg", ErrorMessageResourceType = typeof(Resources))] [DataType(DataType.EmailAddress)] public string Email { get; set; } }
5. 在頁面中添加表單生成代碼,比如:
@using(Html.BeginForm()) { @Html.LabelFor(m=>m.Email) @Html.TextBoxFor(m=>m.Email) @Html.ValidationMessageFor(m=>m.Email) }
Unobtrusive JavaScript 的好處顯而易見,但是如何在MVC3使用Unobtrusive JavaScript呢?
1、引用相應的Javascript文件
1
2
3
4
|
<
script
src="@Url.Content("~/Scripts/jquery-1.4.1.min.js")" type="text/javascript"></
script
>
<
script
src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></
script
>
<
script
src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></
script
>
<
script
src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></
script
>
|
2、開啟 Unobtrusive JavaScript
MVC3中的Web.Config文件中默認多了兩個配置項
這里是一個全局設置,你可以打開或者關閉。
另外,你也可以在任何一個 Action 或 Controller 中執行以下代碼,靈活地進行控制,來處理一些特殊的 Action 或 Controller。
1
2
|
HtmlHelper.ClientValidationEnabled =
true
;
HtmlHelper.UnobtrusiveJavaScriptEnabled =
true
;
|
鏈接:http://www.cnblogs.com/dudu/archive/2012/04/27/jquery_validate_unobtrusive_focusout_focusin.html
http://www.cnblogs.com/dozer/archive/2010/11/11/Unobtrusive-JavaScript-in-ASP-NET-MVC-3.html