ASP.NET MVC 控制器與視圖_實用技巧

來源:互聯網
上載者:User

一、控制器相關

在Controller類中方法存取層級為public的方法,就是行為(Action).如果不希望Controller類中的方法成為Action(可以在地址欄中被訪問),有兩種實現方式:將方法的存取層級設定為private在方法上添加特性標記[NonAction]

                  

諸如新增\修改等功能模組,我們往往會建立2個名稱相同的Action:一個action用於載入新增\修改頁面;另一個action用於處理新增\修改頁面提交的表單資料.那麼如何區分在何時調用哪個action呢?

  我們將載入新增|修改頁面時被調用的action,添加[HttpGet]特性標記;將處理頁面提交的表單資料時調用的action,添加[HttpPost]特性標記.

下面的範例程式碼示範了如何?學生的新增(action相關的代碼).

                  

如何在Action中擷取表單提交的資料?

表單中提交的資料,可以通過Action的參數進行映射.

映射的前提條件:Html標記的name屬性值和action中參數的名稱要一致.

下面的範例程式碼示範了映射的過程(注意粉色框標記的部分):

                  

Action中如何映射複雜物件?

對於上面的映射代碼,我們還可以有另外一種等價的寫法,就是將映射的屬性定義到一個實體類中,這樣我們就可以在action中添加該實體類型的參數,參考代碼如下所示:

                  

如何從一個Action中跳轉至另外一個Action?

新增或修改功能完成後,需要跳轉至資料列表頁面,我們可以通過如下代碼實現:

代碼 => return RedirectToAction(“ActionName”, “ControllerName”).

二、視圖相關

在ASPX視圖引擎中,可以使用asp伺服器控制項,但它的作用僅僅局限與產生html代碼,而不推薦開發人員使用asp控制項的事件.因此建議開發人員手工編寫Html標記。

但是手寫Html標記比較耗費時間,有沒有更好的解決方案?答案就是使用Html輔助方法。

Html輔助方法

Html輔助方法的作用就是通過調用C#方法的方式,快速的產生相應的html標記.

Html輔助方法分為2大類:弱類型html輔助方法和強型別html輔助方法.

其中以For關鍵字結尾的都是強型別的輔助方法.下面的範例程式碼示範了二者的調用方式,以及產生的html源碼。

                  

注意:Html輔助方法有很多種重載形式,在開發過程中可以根據實際需要自行選擇.比如要實現一個包含class\style\onchange屬性和事件的單行文字框,可以參考如下代碼: 

                  

強調:如何使用HTML輔助方法產生form標記?

產生form標記的兩個Html輔助方法為:Html.BeginForm()和Html.EndForm(),但他們在使用時和其他的Html輔助方法有所不同,下面的範例程式碼示範了它們的兩種用法:

                  

如何在URL地址中傳遞參數?

情境一:將學生ID值對應到名稱為id參數上

情境二:將學生ID值對應到名稱為stuId參數上

情境三:url地址中包括stuId和name兩個參數

這三種情境的使用代碼如下所示:

                  

其他在實際開發過程中,一個小的功能模組就對應一個控制器.比如學生資訊管理就是一個控制器,新增學生\修改學生\查詢學生列表\刪除學生都可以對應控制器中的Action.常用Html輔助方法匯總

弱類型

強型別

單行文字框

Html.TextBox()

Html.TextBoxFor()

多行文字框

Html.TextArea()

Html.TextAreaFor()

密碼框

Html.Password()

Html.PasswordFor()

複選框

Html.Checkbox()

Html.CheckBoxFor()

選項按鈕

Html.RadioButton()

Html.RadioButtonFor()

下拉式清單方塊

Html.DropdownList()

Html.DropdownListFor()

平鋪列表框

Html.ListBox()

Html.ListBoxFor()

Label

Html.Label()

Html.LabelFor()

Form表單

Html.BeginForm() Html.EndForm()

超連結

Html.ActionLink()

如何在視圖中使用下拉式清單

第一步:在action中構造好下拉式清單中需要的資料,資料的類型為IEnumerable<SelectListItem>。

第二步:將構造好的資料放到Controller中的ViewData(ViewBag|TempData)屬性中。

第三步:在視圖view中使用Html.DropDownList輔助方法來產生下拉式清單,而繫結資料可以使用視圖View中的ViewData來擷取(換句話講就是,Controller中放置到ViewData的資料,可以在視圖View中的ViewData屬性中提取)。

                  

在視圖中使用Html.DropDownList綁定Ienumerable<SelectListItem>

                  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.