Asp.Net MVC part2 View、Controller詳解

來源:互聯網
上載者:User

標籤:content   按鈕   html編碼   textbox   產生   注意   選項按鈕   style   c#   

View詳解
Razor視圖引擎簡介
HtmlHelper
強型別頁面

Razor視圖引擎簡介
強大的@:表示使用C#代碼,相當於aspx中的<%%>
可以完成輸出功能
當遇到html標籤時會認為C#代碼結束,貪婪匹配後面的內容,如@a1會認為是變數a1,如@a<br>1會認為是變數a
會對標籤內容進行Html編碼
注釋:@*注釋內容*@
注意:@變數表示輸出,結尾不加分號
引入命名空間:@using 命名空間;

HtmlHelper
Helper:是為了方便View的開發而產生的
HtmlHelper的演變
普通連結:<a href="/home/index">首頁</a>
當路由規則改變時,幾乎所有的超串連都要更改
藉助Url根據路由規則產生連結地址:<a href=“@Url.Action(”Index“,”Home“)”>首頁</a>
缺陷是不能編譯時間排錯,只有運行時才知道是否正確
專門用於MVC的連結方式:Html.Action(“Home”,“Index”),會根據路由規則產生a標記,並且在運行時可以進行有效性檢查,不需要使用者點選連結後才知道連結出錯了
Raw:輸出
Encode:進行Html編碼
Action:伺服器端其它頁面


表單控制項
類型一:Html.**(),以字串為參數
類型二:Html.**For(),以Expression<Func<TObject,TProperty>>為參數,一般用於強型別頁面
自動裝配:根據參數產生控制項的name、id屬性,賦值會根據ViewData中同名鍵擷取資料賦值給value屬性
注意:結尾不加分號

表單方式一:using(Html.BeginForm(actionName,controllerName)){…}
表單方式二:
@Html.BeginForm(actionName,controllerName)

@{Html.EndForm();}

標籤框:Html.Label(string expression,string text):會產生一個label標記,並顯示text內容
文字框:Html.TextBox(“AA”);//會自動取ViewDate中鍵為AA的值,同時會以“AA”作為產生的HTML控制項的id與name屬性的值
隱藏欄位:Html.Hidden(“AA”)//同TextBox
注意:沒有提交按鈕、按鈕的封裝

複選框:Html.Checkbox(name)//被翻譯成一個checkbox與一個hidden
選項按鈕:Html.RadioButton(name,value,isChecked)//被翻譯成radio控制項
DropDownList:在Action中向ViewData中傳遞一個List<SelectListItem>集合,在View中指向ViewData的參數,則會以下拉式清單的形式展示資料

強型別視圖
手動建立強型別視圖
在ViewModel中建立一個類型
在Action中為ViewData.Model賦值
在View中使用“@model 類型”設定
根據菜單建立強型別視圖
優點
在編譯時間可以完成代碼檢驗
智能提示

使用表單的**For系列控制項
要求使用強型別頁面
強型別的優點:可以在編譯階段進行代碼檢查
在Action中為ViewData.Model賦值
將View頁面做成強型別頁面
使用Html.**For(model=>model.Property)的格式調用,參數為一個lambda運算式,可以根據對象的屬性快速產生表單控制項

 

Controller詳解
一般繼承自Controller類,類Controller繼承自ControllerBase,實現了IController介面
Action的本質就是類中的公有方法,可以進行重載,要求參數不同
可以接收用戶端的Get或Post請求,如果希望某個方法只處理某一種請求,可以在方法前加特性[HttpGet]或[HttpPost],處理請求時會根據參數進行相應方法的調用
也可以通過路由規則傳遞資料

接收參數
方式一:使用Request根據key接收value
方式二:自動裝備,在方法的參數位置,定義類型及參數名稱,mvc會自動匹配相同名稱的屬性值,即匹配input的name與對象的屬性相同名稱的值
還可以完成自訂型別參數的封裝
自動裝配的要求:參數的名稱或物件類型的屬性必須與參數的鍵相同

返回結果
傳回型別為ActionResult,是一個抽象類別,需要返回具體類型的結果對象

直接或間接繼承自ActionResult的類型
ViewResult:使用View()可以指定一個頁面,也可以指定傳遞的模型對象,如果沒有指定參數則表示返回與Action同名的頁面
ContentResult:使用Content(string content)返回一個原始字串
RedirectResult:使用Redirect(string url)將結果轉到其它的Action
JsonResult:使用Json(object data)將data序列化為json資料並返回,推薦加上JsonRequestBehavior.AllowGet可以處理Get請求,一般結合用戶端的ajax請求進行返回

如果控制器類建立在當前項目中,則需要放到Controller檔案夾中
控制器可以從當前項目中分離出來,放到其它的項目中,本質就是將類定義到其它的項目中

Asp.Net MVC part2 View、Controller詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.