ASP.NET MVC 重點教程一週年版 第八回 Helper之演化
阿新 • • 發佈:2018-12-27
凡事出現必有原因
就像Filter,它是為了解決在一類的Action之前或之後執行統一的程式碼而產生的。
而Helper則是為了方便View的開發而產生的。
下面我們來解決幾個問題,來看看Helper是怎麼演化出來的。
起
題目:如何在View中寫一個超級連線連線到主頁?
這個問題看起來很好回答:
<a href="/home/index">首頁</a>
承
其實上面這種不能稱之為方案的寫法其實是最好的,沒有呼叫任何的方法,僅用純的HTML就解決了問題。
但是如果Route規則改變了那怎麼辦呢?就像原來的
routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" } );
改為了
routes.MapRoute( "Default", "{controller}/{action}.htm", new { controller = "Home", action = "Index" } );
副檔名變了,如果按上個答案那連線就要改為
<a href="/home/index.htm">首頁</a>
如果專案中涉及到此Route規則的引用有很多的話,那麼這麼批量的改肯定會累死人的,而且還容易出錯
那我們應該怎麼辦呢?
所以我們就要用UrlHelper
<a href="<%=Url.Action("Index","Home")%>">首頁</a>
這樣在Route規則變化的情況下也會得到正確的地址
轉
上面的方法使Url可以應對變化,可是還有一個問題就是href=”<%=%>”這種方式在VS中是很難智慧感知和除錯的,所以要有一種很好的除錯方式於是就產生了最初的HtmlHelper
<%=Html.ActionLink("首頁","Index","Home")%>
這樣就可以方便智慧感知及除錯了,而且程式碼也比較乾淨
結
上述的淺見描述了為何出現Helper,希望新學習ASP.NET MVC的朋友有所幫助。