MVC學習筆記之:ASP.NET MVC的客戶端驗證-jQuery.validate驗證結合Model驗證中的實現
關於JQuery.validate客戶端驗證,可以在網上找找資料,Jquery Validate客戶端驗證
生成的Html程式碼:
如果看過jquery.validate相關的文件,你可能會疑惑,jquery.validate一般都是把驗證規則定義在css樣式中,更規範的寫法,獨立寫js,和html脫離開來。
jQuery驗證控制元件jquery.validate.js使用說明+中文API
結合ASP.NET MVC中的運用,可以看蔣金楠大牛的部落格,寫的很系統,ASP.NET MVC的客戶端驗證:jQuery的驗證.以及他相關的部落格,寫的非常好。
下面是我個人結合自己專案中的筆記:
Model的定義:
public class UserInfo
{
[Required]
[StringLength(20, ErrorMessage = "UserName can not more than 20 chars")]
public string UserName { get; set; }
[Required]
[StringLength(200)]
public string Password { get; set; }
}
View中的程式碼:
@model XXX.Model.User.UserInfo
<li>
<p>
Username
</p>
@Html.TextBoxFor(m => m.UserName)
<br />
@Html.ValidationMessageFor(m => m.UserName)
</li>
<li>
<p>
Password
</p>
@Html.PasswordFor(m => m.Password)
<br />
@Html.ValidationMessageFor(m => m.Password)
</li>
生成的Html程式碼:
<li>
<p>
Username
</p>
<input data-val="true" data-val-length="UserName can not more than 20 chars" data-val-length-max="20" data-val-required="UserName 欄位是必需的。" id="UserName" name="UserName" type="text" value="" />
<br />
<span class="field-validation-valid" data-valmsg-for="UserName" data-valmsg-replace="true"></span>
</li>
<li>
<p>
Password
</p>
<input data-val="true" data-val-length="欄位 Password 必須是最大長度為 200 的字串。" data-val-length-max="200" data-val-required="Password 欄位是必需的。" id="Password" name="Password" type="password" />
<br />
<span class="field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span>
</li>
如果看過jquery.validate相關的文件,你可能會疑惑,jquery.validate一般都是把驗證規則定義在css樣式中,更規範的寫法,獨立寫js,和html脫離開來。
<input class="required" id="name" name="name" type="text"/>or
<script type="text/javascript">
1:
2: $(document).ready(function () {
3: $("form").validate({
4: rules :{
5: name :{required: true},
6: birhthDate :{required: true, date: true},
7: blogAddress :{url: true},
8: emailAddress:{required: true, email: true}
9: },
10:
11: messages: {
12: name :{ required: "請輸入姓名" },
13: birhthDate :{required: "請輸入出生日期", date: "請輸入一個合法的日期"},
14: blogAddress :{ url: "請輸入一個合法的URL" },
15: emailAddress:{required: "請輸入Email地址", email: "請輸入一個合法的Email地址"}
16: }
17: });
18: });
</script>
我們發現,在Model中設定了[Required]等特性,在前臺不寫一行js驗證的程式碼,客戶端已經實現了驗證;後臺只要呼叫一行程式碼ModelState.IsValid,就實現了伺服器端的驗證,是不是有web form中Page.IsValid的感覺,不用寫驗證的程式碼,是不是很爽?
if (ModelState.IsValid)
{
LoginResponse response = eServiceProxy.serviceProxy.Login(request);
if (response != null && response.IsAuthenticated)
{
FormsAuthentication.SetAuthCookie(request.Username, true);
return RedirectToAction("Index", "Home");
}
else
{
ViewData["errorMsg"] = "Login Fail";
}
}
可是,有沒有很好奇,MVC生成的html中,沒有定義規則的class,也沒有生成相關的js來定義rules.甚至連呼叫驗證的validate()方法都沒有,它是如何觸發驗證的呢?
相關文章
- ASP.NET MVC學習之模型驗證篇ASP.NETMVC模型
- MVC驗證07-自定義Model級別驗證MVC
- [ASP.NET MVC 小牛之路]16 - Model 驗證ASP.NETMVC
- MVC驗證01-基礎、遠端驗證MVC
- MVC驗證09-使用MVC的Ajax.BeginForm方法實現非同步驗證MVCORM非同步
- MVC驗證10-到底用哪種方式實現客戶端服務端雙重非同步驗證MVC客戶端服務端非同步
- mvc 客戶端 驗證 失效 沒有 form 標籤MVC客戶端ORM
- Asp.Net MVC 身份驗證-FormsASP.NETMVCORM
- ASP.NET MVC驗證碼演示ASP.NETMVC
- Asp.net MVC中表單驗證ASP.NETMVC
- MVC驗證08-jQuery非同步驗證MVCjQuery非同步
- MVC驗證02-自定義驗證規則、郵件驗證MVC
- Identity Server 4 - Hybrid Flow - MVC客戶端身份驗證IDEServerMVC客戶端
- MVC驗證04-自定義驗證規則、日期範圍驗證MVC
- 在ASP.NET MVC中使用Knockout實踐06,自定義驗證、非同步驗證ASP.NETMVC非同步
- ASP.NET MVC結合jQuery外掛進行資料驗證ASP.NETMVCjQuery
- swoft 學習筆記之驗證器筆記
- spring mvc實現登入驗證碼SpringMVC
- mvc中常見的屬性驗證MVC
- ASP.NET MVC中使用FluentValidation驗證實體ASP.NETMVC
- MySQL的可插入驗證和客戶端明文驗證外掛介紹MySql客戶端
- 無密碼驗證:客戶端密碼客戶端
- MVC驗證05-自定義驗證規則、驗證2個屬性值不等MVC
- MVC Remote 伺服器驗證MVCREM伺服器
- MVC 後設資料驗證MVC
- 雙重保險——前端bootstrapValidator驗證+後臺MVC模型驗證前端bootMVC模型
- Django學習筆記—驗證碼Django筆記
- MVC3中使用驗證介面卡修改預設的驗證提示資訊MVC
- KgCaptcha驗證碼實現筆記GCAPT筆記
- ASP.NET MVC許可權驗證 封裝類ASP.NETMVC封裝
- 在ASP.NET MVC中使用Knockout實踐05,基本驗證ASP.NETMVC
- asp.net mvc中的使用者登入驗證過濾器ASP.NETMVC過濾器
- validator 驗證框架(學習筆記)框架筆記
- MVC驗證11-對複雜型別使用jQuery非同步驗證MVC型別jQuery非同步
- MVC驗證03-自定義驗證規則、禁止輸入某些值MVC
- 報錯:非介入式客戶端驗證規則中的驗證型別名稱必須唯一。下列驗證型別出現重複客戶端型別
- Asp.net中基於Forms驗證的角色驗證授權ASP.NETORM
- Laravel——驗證碼認證學習記錄Laravel