MVC3学习 六 HtmlHelper的使用与扩展
使用鏈接時,如果傳統的跳轉方式如:
<a href="Home/Index>返回</a>?如果將路由的默認配置
routes.MapRoute("Default", // Route name"{controller}/{action}/{id}", // URL with parametersnew { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults);修改為:
routes.MapRoute("Default", // Route name"{controller}-{action}/{id}", // URL with parametersnew { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults);則原始的跳轉就會失效。所以在跳轉時,要使用
@Html.ActionLink("返回","Index","Home")這樣,不管以后的路由規則如何變化,鏈接照樣還可以使用。
顯示數據的細節:
MVC中,控件的數據綁定都是先根據name到viewdata中去尋找key值,如果存在,則綁定數據,所以在controller中,直接將數據綁定到viewdata中,key設置為控件的name名,就可以直接顯示了,如:
controller中:ViewData["id"]="1";
view中:@Html.TextBox("id"),這樣,在頁面加載時,會直接將這個“1”綁定到TextBox中,同樣綁定Dropdownlist時,也可以同樣用這種方式。
<% : %>與<% = %>的區別
<% : %>會將代碼以安全的方式顯示在view中,比如在controller中,Viewdata["message"]="<script>alert("您好")</script>",
<% : Viewdata["message"]%>顯示時,會將"<"自動轉碼為html的格式,也就是說不會彈出提示。
<%=Viewdata["message"]%>顯示時,并不會轉換,而是直接在頁面彈出對話框。
擴展Htmlhelper
擴展時需要注意三個要素,即:靜態類,靜態方法,this關鍵字。
在models中新建一個類,代碼如下:
namespace System.Web.Mvc {//擴展HtmlHelper方法public static class MyHtmlHelperExt{//擴展HtmlHelper方法public static string Mylable(this HtmlHelper helper, string txt){return string.Format("<p>您好,{0}</p>", txt);}public static HtmlString MyHtmlStringLable(this HtmlHelper helper, string txt){return new HtmlString(string.Format("<p>您好,{0}</p>", txt));}} }
這里首先需要注意,namespace System.Web.Mvc,如果不將默認的命名空間變成和HtmlHelper一致的話,在頁面中不導入models的命名空間會無法使用,所以若想在其他頁面中直接使用,就需要將命名
空間和HtmlHelper一致,這樣能使用HtmlHelper的頁面,也同樣能夠使用擴展的方法。
然后需要注意的是第一個擴展的方法,如果直接返回string類型,而不返回HtmlString類型時,那么返回的字符串會被自動轉換成html格式,也就是說p標簽無效,而微軟做的直接就可以返回標簽,是因為返回
的是HtmlString類型,所以需要將返回類型設置為HtmlString。
?
轉載于:https://www.cnblogs.com/y8932809/p/4387070.html
總結
以上是生活随笔為你收集整理的MVC3学习 六 HtmlHelper的使用与扩展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FLV视频在IIS6.0下不能播放 处理
- 下一篇: ASP.NET安全[开发ASP.NET