今天寫了個MVC的Demo,文件夾結構很簡單,如下:

利用EF生成Model框架並手工加表字段注解,但在頁面上JS驗證始終沒顯示。實在無語。
無意中在瀏覽器里按F12,看見提示:
1 <head> 2 <meta charset="utf-8" /> 3 <title>@ViewBag.Title</title> 4 <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 5 <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 6 <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 7 <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script> 8 <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 9 <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 10 @*映射錯誤的路徑*@ 11 <script type="text/javascript" src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 12 <script type="text/javascript" src="~/Scripts/jquery.validate.min.js"></script> 13 <script type="text/javascript" src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> 14 </head>
果然,11,12,13行的代碼運行時會被映射到:
映射后的物理路徑有問題。實際Jquery在網站根目錄下,而不再Test文件夾下!
把出錯的這幾行去掉,用@Url.Content()函數映射,將虛擬(相對)路徑轉換為應用程序絕對路徑。
PS:要想使用MVC的JS自動驗證,除了在Model寫注解、引入jquery-1.5.1.min.js外,還要注意是否引入了jquery.validate.js。從名字即可得知,那是JS的驗證方法集。
默認的MVC3空項目和Internet的_Layout.cshtml不引用jquery以及validate.js.