MVC學習之HtmlHelper

來源:互聯網
上載者:User

標籤:按鈕   select   lambda   selected   font   lin   解耦   而不是   nbsp   

1.為什麼要使用HtmlHelper?

1.首先HtmlHelper是一個類型,MVC中的ViewPage<TModel>中的一個屬性Html屬性,這個屬性的類型就是HtmlHelper<TModel>類型的,這樣封裝後最後產生的代碼和我們手寫的html代碼是完全一樣的,沒有任何冗餘,同時可以使得我們直接“點“出來想要的標籤,方便開發。

2.可是只是可以“點”出來這點優勢,好像沒有什麼說服力,因為這些HtmlHelper代碼需要幕後處理後才能轉換成html代碼,多走了一個流程,還有另一個優勢就是HtmlHelper產生的html代碼他是根據路由規則去匹配的,也就是以後你修改了路由規則也是不影響的,實現了路由規則和前端介面的解耦(比如超連結標籤),

3.使用HtmlHelper可以實現更加強大自動綁定。可以直接和ViewData["username"]="123"進行綁定,當然前提是前端的名字和ViewData的名字一樣

2.HtmlHelper的使用

(1)超連結

  <%:Html.ActionLink("連結到Index","Index","Home",new{name="ww", age="ss"},new{ id="1",@class="cls"}) %>

 對於上面的@class這個是講class進行轉義,因為在C#中class是一個關鍵字,對於ActionLink中有很多的重載,可以設定屬性,確定控制器和行為

     等效

<a calss="cls" href=“/Home/Indx/1?name=ww&age=ss”>連結到Index</a>

 (2)下拉式清單

 <% List<SelectListItem> list = new List<SelectListItem>();          list.AddRange (new SelectListItem []{ new SelectListItem() { Text="大學",Value ="0",Selected =false },           new SelectListItem (){ Selected=true,Text ="高中",Value ="1"}           });                   ViewData["drop"] = list;          %>>                 <%:Html .DropDownList("drop",null ,new{id ="33"}) %>

 上面可以發現已經實現與ViewData的自動綁定,否則使用手寫的話沒法實現,Form標籤也只是使用強型別頁面實現綁定

(3)選項按鈕

  <%:Html.RadioButton("sex",0) %>男 <%:Html.RadioButton("sex",1) %>女

 (4)form表單

        <%using(Html.BeginForm("Index","Home",FormMethod.Post,new{id="form1", enctype=""})){ %>        <input type ="submit" value ="提交">        <%} %>

 因為BeginForm方法傳回型別繼承自IDispose,所以使用using。

(5)關於For系列

對於每一個Html中的標籤都有兩個方法,一個帶有for,一個不帶for,上面展示的都是沒有for的展示

對於for系列,可以使用Lambda運算式,這種方法經常和強型別頁面一起使用

Html.TextBoxFor(userInfo=>UserInfo.UserName,new{id ="ss"})

3.關於ASPX引擎中的輸出,可以使用“=”,也可以使用“:”

這兩種方式都是可以實現列印出來的效果,“=”當字串中含有html代碼的時候,可以將html代碼翻譯出來,但是這種方式存在安全危機,也就是容易引發頁面安全錯誤提示

“:”是將字串中的html代碼原陽輸出,也就是實現了EnCode操作,增加安全性,防止跨指令碼攻擊,但是倘若想要列印出翻譯後的結果如何處理呢?,此時可以模仿一下微軟的處理,因為微軟中的HtmlHelper中就是將html翻譯出來的,也就是MvcHtmlString類

<%:MvcHtmlHelper.Create(ViewData["ss"].ToString())%>

這樣就OK了,所以綜上所述,建議使用“:”輸出,而不是使用“=”。

 

MVC學習之HtmlHelper

聯繫我們

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