ASP.NET MVC 自我總結的便捷開發實例

前言

工做了這麼久了,接觸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就是組成列表的選項

⑭有時候,咱們在後端須要直接接收一個列表,那麼這個時候就是應該使用索引器進行接收

雜七雜八的總結

  • 若是是直接根據填入的條件進行查詢的,那麼就使用get請求,若是是對數據進行加工的,那麼使用post請求,get的請求主要是返回頁面的, 因此若是查詢就是相對合理點.
  • 對於路徑的操做:1.URL.Action()生成的/home/index這樣的路徑,可是HTML.ActionLink()就是生成a標籤了,由於帶了HTML,其實就是html的幫助函數

 

感言

初次寫博客..感受寫到亂七八糟,各類編輯器不會用,各類排版不會用,其實寫博客主要是記錄一下本身一些遇到的問題,以及使用的技巧,不少東西都是針對我本身我的而已,因此有時候不免會讓其餘人看不懂,請見諒.

相關文章
相關標籤/搜索