工做了這麼久了,接觸ASP.NET MVC已經好久了,一直都想總結一下它的一些實用的,常常使用的一些技巧,可是由於一直都很懶,也不想總結,因此一直都沒有好好寫出來,趁着如今有這種衝勁,那麼就先把它寫好吧.html
如下都是我對於我來講,以爲比較便捷的代碼,固然,我寫的東西未必適合全部人,可是至少裏面仍是有一些比較簡單且實用的技巧的.前端
例子主要是參照 http://www.cnblogs.com/duanshuiliu/tag/ASP.NET/ 裏面介紹了不少MVC一些很重要並且很經常使用的東西後端
由於是邊看別人的例子,而後再結合我工做中遇到一些問題,或者用上的一些技巧,因此就組合成瞭如下的這些代碼app
先建立如下實體類編輯器
public partial class Person { [Display(Name = "加了標籤的ID")] public int PersonId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime BirthDate { get; set; } public Address HomeAddress { get; set; } public bool IsHappy { get; set; } public Role Role { get; set; } public string Color { get; set; } public List<Relative> relatvie { get; set; } } public class Address { public string City { get; set; } public string Country { get; set; } } public class Relative { public string Name { get; set; } public string RelativeAge { get; set; } } public enum Role { Admin = 1, User = 2, Guest = 3 }
Person類是主要的類,裏面包含了 string類型 int類型 DateTime類型 引用類型 枚舉類型 以及集合類型 的屬性,在實際工做中,常常都會遇到這些類型,而後須要先後臺結合接收數據函數
如下是控制其中的代碼post
public ActionResult StrongModelView(Person person) {
person.PersonId = 123; //對模型進行驗證① if (string.IsNullOrWhiteSpace(person.FirstName)) { ModelState.AddModelError("FirstName", "請輸入FirstName"); }
//② if (ModelState.IsValid) { //若是驗證都經過了,那麼就是怎麼怎麼 } else { //不經過就怎麼怎樣 } Dictionary<string, int> dic = new Dictionary<string, int>(); foreach (int myCode in Enum.GetValues(typeof(Role)))//③ { string strName = Enum.GetName(typeof(Role), myCode);//獲取名稱 dic.Add(strName, myCode); } //下拉框 SelectList sel = new SelectList(dic, "Value", "Key");//④ ViewData["sel"] = sel; //RadioButton List<string> colors = new List<string>() { "Red", "Green", "Blue" }; ViewData["colors"] = colors; return View(person); }
如下是Razor視圖的代碼ui
@using (Html.BeginForm("StrongModelView", "home", FormMethod.Post))//⑤ { //以列表形式輸出錯誤 @Html.ValidationSummary()//⑥ <div> <table> <tr> <td>@Html.LabelFor(c => c.PersonId)</td>//⑦ <td>@Html.DisplayFor(c => c.PersonId)</td>//⑧ </tr> <tr> <td>FirstName</td> <td>@Html.EditorFor(c => c.FirstName)</td>//⑨ </tr> <tr> <td>LastName</td> <td>@Html.TextBoxFor(c => c.LastName)</td> </tr> <tr> <td>BirthDate</td> <td>@Html.EditorFor(c => c.BirthDate)</td>//⑩ </tr> <tr> <td>IsHappy</td> <td>@Html.EditorFor(c => c.IsHappy)</td>//⑪ </tr> <tr> <td>Color</td> <td>@{ List<string> colorss = ViewData["colors"] as List<string>; foreach (var item in colorss) { @item; @Html.RadioButtonFor(c => c.Color, item);//⑫ } } </td> </tr> <tr> <td>Role</td> <td>@Html.DropDownListFor(c => c.Role, ViewData["sel"] as SelectList)</td>//⑬ </tr> <tr style="background-color: #0094ff;"> <td>城市</td> <td>@Html.Editor("relatvie[0].RelativeAge")@Html.Editor("relatvie[0].Name")</td>//⑭ </tr> <tr> <td> <input type="submit" value="提交" /></td> </tr> </table> </div> }
經常使用的或重要的記錄spa
①是添加錯誤進行到模型的狀態中的,若是在前臺中使用了錯誤提示進行接收的話,那麼纔有用,不然我以爲沒什麼用,例如像咱們公司,直接使用TempData["message"]返回全部的提示信息,包括錯誤信息code
②若是模型綁定都經過了.那麼就會是true,若是有模型有綁定不上的,那麼就是返回false
③遍歷枚舉的方法,這個方法應該不少時候都會使用到,因此也記錄下來
④在前臺若是要接收 一個dropdownList的話,那麼就須要使用selectList這個類,而後傳入一個字典是最使用key/value的表示的,而後字典對應selectList的應該是"Key","Value",都是大寫開頭的.(你也能夠傳出其餘IEnumble類型的集合)
⑤這是利用Razor視圖建立一個表單,我的感受其實和普通的html建立的表達的速度是一個的,沒什麼特別,也不見快不少
⑥若是在action方法中,對模型進行驗證,而且返回了錯誤信息,那麼,就可使用ValidationSummary來進行錯誤的顯示,它會生成一個ul進行顯示的,我的仍是以爲沒什麼用
⑦HTML.Labal()則只是顯示該字段的名稱,除非在強類型視圖的這個類的屬性上添加Display(Name="xxx")的標籤,不然都是隻顯示字段的名稱
⑧HTML.Display()顯示的是字段對應的value值
⑨EditorFor會根據返回的類型,生成相應的input標籤,而且生成的Name和ID與字段的名稱是相對應的,例如bool型就生成checkbox,datetme就生成datetime型的
⑫主要爲了如何顯示radio button的列表出來,主要是根據由相同的name因此構成相同的,會提交選中的,
⑬主要是由後端返回一個selectList 而後在前端接收相應的selectList 這個selectList就是組成列表的選項
⑭有時候,咱們在後端須要直接接收一個列表,那麼這個時候就是應該使用索引器進行接收
雜七雜八的總結
感言
初次寫博客..感受寫到亂七八糟,各類編輯器不會用,各類排版不會用,其實寫博客主要是記錄一下本身一些遇到的問題,以及使用的技巧,不少東西都是針對我本身我的而已,因此有時候不免會讓其餘人看不懂,請見諒.