簡體   English   中英

ASP.NET MVC @helper語法與Html Helper擴展方法

[英]ASP.NET MVC @helper syntax vs Html Helper Extension methods

我需要創建自定義的html輔助方法。 據我所知,有兩種方法:

  1. 使用@helper razor語法。 http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx

  2. 創建HtmlHelper擴展方法。

什么解決方案更好,為什么? 有什么優點和缺點?

我只在MVC 3中讀到,當@helper在單獨的.cshtml文件中全局創建時,不可能使用其他內置的html助手。 不知道可能在MVC 4中它是可以存儲的。

請幫忙。

@helper的一個好處是,由於代碼在視圖中,因此您可以對其進行更改,而無需重新編譯代碼。 這使您可以在開發過程中快速輕松地調整幫助程序。 出於這個原因,我個人更願意在可能的情況下將標記保留在視圖中。

@helper的一個相關好處是你的HTML將受益於intellisense,而用C#代碼編寫HTML則沒有這樣的好處。

另外,如果您正在編寫一個不能在單個視圖之外重復使用的幫助程序,那么@helper可以更容易地將其清除。 如果只打算使用一個視圖,HtmlHelper擴展方法會讓人感到困惑(除非你設法將它放在一個類和一個只有那個視圖才會看到擴展方法的命名空間中)。

什么解決方案更好,為什么?

這取決於。

有什么優點和缺點?

  • 自定義HtmlHelper擴展的優點:
    • 無論您使用什么視圖引擎,它都可以工作
    • 它是可單元測試的
    • 它可以在應用程序之間移植
  • 自定義HtmlHelper擴展的缺點:
    • 在C#中編寫大量HTML邏輯可能會變得很麻煩
  • @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)

它們可以像用戶控件和自定義控件

使用@helper在視圖中進行剃刀樣式格式化。 對通用解決方案使用擴展方法,例如重載帶有其他參數的標簽創建。

您可以在此處找到詳細解釋和示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM