一、控制器相關
在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>