Asp.Net MVC4 + Oracle + EasyUI 學習 第一章
--運算元據和驗證
本文連結:http://www.cnblogs.com/likeli/p/4234238.html
文章集合:http://www.cnblogs.com/likeli/category/651581.html
1、 關於HtmlHelper和UrlHelper
因為大部分的web請求的目標都是向客戶端傳送HTML程式碼。因此,Asp.Net MVC也是為我們建立HTML提供了各種幫助。除了Razor,另外還有兩個最為重要的幫助類就是HtmlHelper和UrlHelper,他們作為控制器和檢視的Html和Url屬性暴露出來,供我們使用。
這裡列舉一個幫助類的例子:
1 <img src="@Url.Content("~/Content/images/1.jpg")" /> 2 @Html.ActionLink("HomePage","Index","Home")
該部分程式碼渲染之後為:
1 <img src="/Admin/content/images/1.jpg" /> 2 <a href="/Admin/Home/Index">HomePage</a>
這兩個幫助類只是擴充套件了框架的一些附加行為。關於他們的擴充套件方法太多,這裡無法一一列舉,但之後會用到。
強調一下:HtmlHelper幫我們生成HTML程式碼,UrlHelper幫我們生成URL地址,所以,只要記住,當我們需要生成HTML程式碼或URL的時候,就該使用他們了。
2、 簡單登陸實戰
網上down一個首頁,如圖:
圖1
建立簡單的模型、控制器,並生成檢視。
圖2
在建立檢視的時候,不用EF生成,建立空白的檢視即可。
1 public ActionResult Login() 2 { 3 return View(); 4 } 5 6 [HttpPost] 7 public ActionResult Login(LoginModel model) 8 { 9 if (ModelState.IsValid) 10 { 11 //簡單驗證通過 12 return RedirecToLocal("~/Admin/Home"); 13 } 14 else 15 { 16 // 如果我們進行到這一步時某個地方出錯,則重新顯示錶單 17 ModelState.AddModelError("", "提供的使用者名稱或密碼不正確"); 18 return View(model); 19 } 20 }
以上程式碼為登陸控制器的程式碼。並做了簡單的驗證。驗證通過後,跳轉到指定頁面。
通常設涉及到資料問題時,會有很多規則和限制可以使用,比如,欄位非空,給欄位設定範圍區間等等。MVC中控制器可以通過操作ModelState來檢查請求是否有效。
1 public class LoginModel 2 { 3 [Required] 4 [Display(Name = "使用者名稱")] 5 [StringLength(10, ErrorMessage = "必須至少包含{2}個字元", MinimumLength = 3)] 6 public string UserName { get; set; } 7 8 [Required] 9 [Display(Name = "密碼")] 10 public string UserPwd { get; set; } 11 12 [Required] 13 [Display(Name = "記住我?")] 14 public bool RememberMe { get; set; } 15 }
關於上面的Required、Display、StringLength標記,這是為了對這個屬性進行強化控制。
- 重點說明一下自定義錯誤資訊。資料標記提供了ErrorMessage屬性,可以指定返回給使用者的錯誤資訊。而不是由Data Annotations API生成的預設資訊。就如上面程式碼中定義字元長度的方法一樣。
定義好錯誤資訊後,那麼現在就是需要如何顯示這個錯誤資訊了。ViewData.ModelState["UserName"]可以讀取到這個錯誤資訊,但這是一個集合,我們需要用迭代迴圈來顯示錯誤資訊,那麼就難免要在頁面上書寫迴圈來輸出錯誤資訊。但是,現在MVC提供能更好的方法來渲染特定屬性的錯誤資訊@Html.ValidationMessageFor(string modelName),這個方法讓我們省去了迴圈的程式碼。如下,一句程式碼即可完成該效果:@Html.ValidationMessageFor(m => m.UserName)
- 這裡再次提示一下,這裡用的驗證方法都是在服務端的程式碼驗證,需要在伺服器和客戶端之間來來回回幾次才能驗證資料的有效性,那麼聰明的你應該瞬間明白我要說什麼了,那就是這種驗證方式並不是一種節約頻寬和伺服器資源的好方法。但不可否認,這是一種有效的方法,可以很好的保證資料的有效性、安全性。選擇性的使用即可,之後的文章裡會優化驗證方法,來避免不必要的請求,節約頻寬和伺服器資源。
檢視中,我們需要用到HtmlHelper和UrlHelper來生成Url和HTML標記。
1 @using (Html.BeginForm()) 2 { 3 <div class="loginbox"> 4 <ul> 5 <li> 6 @Html.TextBoxFor(m => m.UserName, new { @class = "loginuser", @placeholder = "請輸入使用者名稱" }) 7 @Html.ValidationMessageFor(m => m.UserName) 8 </li> 9 <li> 10 @Html.TextBoxFor(m => m.UserPwd, new { @class = "loginpwd", @placeholder = "請輸入密碼" }) 11 @Html.ValidationMessageFor(m => m.UserPwd) 12 </li> 13 <li> 14 <input type="submit" class="loginbtn" name="slogin" value="登陸" /> 15 <label> 16 @Html.CheckBoxFor(m => m.RememberMe, new { @checked = "checked"})記住密碼 17 </label> 18 <label> 19 <a href="javascript:;">忘記密碼?</a> 20 </label> 21 </li> 22 </ul> 23 </div> 24 }
上文的程式碼中,可以看到利用HtmlHelper來生成了幾個文字框、核取方塊等,HtmlHelper的擴充套件有許多,可以前往MSDN檢視詳情。
這裡若是想要給生成的標籤加上屬性或者樣式,可以使用new{@屬性=“值”}的方式來新增。
3、 參考文獻
《Asp.Net MVC4 Web程式設計》、MSDN
4、 相關下載
原始碼:http://download.csdn.net/detail/a406502972/8376701
5、 後記
本文是一個漫長的過程,因為是自己在學習,所以我會精細到我所遇到的每一個問題,每一個細節,所以,寫博文比較慢。
也特別希望,各位博友在閱讀過程中,多多提點,一方面細化的我學習理解,也強化一下我的文件書寫能力。
真誠希望我能從小菜進化到小牛再到大牛。希望閱讀的博友們也能從我的學習過程中獲得進步!
相關文章
- Asp.Net MVC4 + Oracle + EasyUI 學習 序章ASP.NETMVCOracleUI
- Asp.Net MVC4 + Oracle + EasyUI 學習 第二章ASP.NETMVCOracleUI
- 【EasyUI學習-1】MyEclipse+easyui學習官方DemoUIEclipse
- to debug asp.net mvc4ASP.NETMVC
- ASP.NET MVC4 入門簡介ASP.NETMVC
- ASP.NET MVC4 亂七八糟羅列ASP.NETMVC
- Asp.Net MVC4 系列--基礎篇(1)ASP.NETMVC
- Asp.Net MVC4系列---基礎篇(5)ASP.NETMVC
- Asp.Net MVC4系列---基礎篇(4)ASP.NETMVC
- 機器學習 第一章學習機器學習
- 《深度學習入門:》學習基本第一章深度學習
- Asp.Net MVC4系列--進階篇之AJAXASP.NETMVC
- Asp.Net MVC4 系列--進階篇之ViewASP.NETMVCView
- Using NInject Do DI(3) In Asp.net MVC4ASP.NETMVC
- asp.net mvc easyui datagrid分頁ASP.NETMVCUI
- 教你如何成為Oracle 10g OCP - 第一章學習Oracle 10g
- Asp.Net MVC4 系列--進階篇之Model(1)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Model(2)ASP.NETMVC
- Asp.Net MVC4 系列-- 進階篇之路由(1)ASP.NETMVC路由
- Asp.Net MVC4 系列--進階篇之路由 (2)ASP.NETMVC路由
- Asp.Net MVC4系列--進階篇之Helper(1)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Helper(2)ASP.NETMVC
- 學習筆記-《基於Oracle的SQL優化》-第一章-1筆記OracleSQL優化
- GIT學習筆記——第一章Git筆記
- ASP.NET MVC4 捆綁(Bundle)技術下的 JavaScriptASP.NETMVCJavaScript
- ASP.NET MVC4中呼叫WEB API的四個方法ASP.NETMVCWebAPI
- 具體數學學習筆記——第一章筆記
- 學習ASP.NET的流程ASP.NET
- ASP.NET 學習手記ASP.NET
- 深度學習day1(第一章:什麼是深度學習?)深度學習
- easyui學習筆記5—panel載入其他的頁面UI筆記
- Asp.Net MVC4 系列--進階篇之Controller(2)ASP.NETMVCController
- head first java第一章的學習Java
- Java基礎學習筆記 第一章Java筆記
- 《統計學習方法》第一章總結
- ASP.NET學習筆記2ASP.NET筆記
- ASP.NET Core RESTful學習理解ASP.NETREST
- Asp.Net 學習資源列表ASP.NET