色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

[一步一步MVC]第四回:漫談ActionLink,有時“胡攪蠻纏”

系列文章導航:

[一步一步MVC]第一回:使用ActionSelector控制Action的選擇

[一步一步MVC]第二回:還是ActionFilter,實現對業務邏輯的統一Authorize處理

[一步一步MVC]第三回:MVC范例大觀園

[一步一步MVC]第四回:漫談ActionLink,有時“胡攪蠻纏”

[一步一步MVC]第五回:讓TagBuilder豐富你的HtmlHelper

[一步一步MVC]第六回:什么是MVC(上)?


MVC時代來臨了,但是一開始是不被很多人接受的。可能的主要原因是,大家不得不告別拖拉控件的至爽感受,回到貌似ASP的歷史歲月。所以,心有不甘是可以理解的,然而時代顯然是進步的。我們雖然必須在View中進行很多HTML代碼的工作,但是MVC為我們提供了可以堪稱完美的方案(至少我是這樣認為的),那就是HtmlHelper。在MVC的View層,我們有很多熟悉的面孔,例如Html.Encode、Html.AntiForgeryToken、Html.BeginForm、Html.TextBox等,而其中ActionLink算是其中的“猛將兄”。

淺議HtmlHelper

簡單的說,HtmlHelper就是一個封裝了ViewContext、IViewDataContainer、RouteCollection等上下文信息的一籮筐靜態方法類(注,HtmlHelper本身并不是靜態類),其中包含了我們上文介紹的熟悉身影Encode、AntiForgeryToken等,但不包含BeginForm、TextBox,當然也不包括ActionLink,其原因是BeginForm、TextBox、ActionLink其實是HtmlHelper的擴展方法,我們可以從智能感知提示中最直觀的得到了解:

o_anytao_mvc_07_actionlinktalk_01[1]

顯然,ActionLink和Encode的智能提示標記是有區別的。

所以,HtmlHelper其實很簡單,而通過Extension Methods對其的“功能注入”機制實現了極大的擴展空間。而且,HtmlHelper封裝了ViewContext、RouteCollection等上下文信息,為實現擴展帶來便利。所以,順便提一下,這也正是老趙同志在為視圖自定義輔助方法(上)中實現JQueryHelper時引入相應元素(ViewContext、RouteCollection、ViewPage),有著異曲同工之妙,所以HtmlHelper并不是唯一的選擇,高興的話,你也可以類似于AnytaoHelper之類的東東。

所以,通過HtmlHelper就可在運行時動態生成HTML代碼,其實我們在WebForm時代就經常玩兒這種“陰招”,然而在HtmlHelper這里,顯然已經發揚光大了。例如老趙的JQueryHelper就通過一系列的包裝,省去了對validation的麻煩語法。

同時,擴展HtmlHelper其實及其簡單。例如:

 

// Release : code01, 2009/04/30
// Author : Anytao, http://www.anytao.com
public static string Label(this HtmlHelper helper, string name, string value)
{
return string.Format("{1}
"
, name, value);
}

NET技術[一步一步MVC]第四回:漫談ActionLink,有時“胡攪蠻纏”,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 双流县| 南汇区| 潍坊市| 阳朔县| 鹤峰县| 双辽市| 万载县| 中方县| 鹤峰县| 开化县| 靖远县| 连云港市| 崇文区| 元阳县| 莱州市| 涿鹿县| 乃东县| 军事| 福安市| 子长县| 施秉县| 右玉县| 承德市| 中阳县| 东平县| 丹江口市| 安康市| 山东省| 陆丰市| 福泉市| 海林市| 玉林市| 微博| 安宁市| 高青县| 长岭县| 秭归县| 公主岭市| 乌苏市| 彝良县| 杭锦旗|