[英]ASP.NET MVC @helper syntax vs Html Helper Extension methods
我需要創建自定義的html輔助方法。 據我所知,有兩種方法:
使用@helper razor語法。 http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx
創建HtmlHelper擴展方法。
什么解決方案更好,為什么? 有什么優點和缺點?
我只在MVC 3中讀到,當@helper在單獨的.cshtml文件中全局創建時,不可能使用其他內置的html助手。 不知道可能在MVC 4中它是可以存儲的。
請幫忙。
@helper的一個好處是,由於代碼在視圖中,因此您可以對其進行更改,而無需重新編譯代碼。 這使您可以在開發過程中快速輕松地調整幫助程序。 出於這個原因,我個人更願意在可能的情況下將標記保留在視圖中。
@helper的一個相關好處是你的HTML將受益於intellisense,而用C#代碼編寫HTML則沒有這樣的好處。
另外,如果您正在編寫一個不能在單個視圖之外重復使用的幫助程序,那么@helper可以更容易地將其清除。 如果只打算使用一個視圖,HtmlHelper擴展方法會讓人感到困惑(除非你設法將它放在一個類和一個只有那個視圖才會看到擴展方法的命名空間中)。
什么解決方案更好,為什么?
這取決於。
有什么優點和缺點?
@helper
優點:
@helper
缺點:
實際上,問題是@helper
是恕我直言,完全沒用。 當你想要我提到的有關自定義HtmlHelper擴展的優點時,你可以構建一個自定義的HtmlHelper擴展。
如果你遇到我提到的關於自定義HtmlHelper擴展的一些缺點,你可以使用局部視圖。
我只在MVC 3中讀到,當@helper在單獨的.cshtml文件中全局創建時,不可能使用其他內置的html助手。
那是錯的。 你完全可以使用其他的Html助手。 您只需將它們作為參數傳遞:
@helper FooBar(HtmlHelper html) {
feel free to use the html helper here
}
從視圖中消費時:
@HelperName.FooBar(Html)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.