2011-03-08 74 views
0

我一直在使用自定義HTML幫助器擴展。最近我已經決定這將是很好用的輔助看起來像這樣的MVC中的自定義HTML幫助器類

<%: Style.MyCustomExtensionMethod(...) %> 

@Style.MyCustomExtensionMethod("abcd") 

我找遍了網,但總是跑進是通過Html.

稱爲自定義HTML傭工

我也是從HtmlHelper類繼承這樣

public static class Style : HtmlHelper 
{ 
    public static string test(this HtmlHelper helper, string text) 
    { 
     return text; 
    } 
} 

但是這並不起作用(在View中它說找不到方法test(),它只接受一個參數。

回答

1

如果你想實現你鑑於這種語法,你總是可以:

public static class Style 
{ 
    public static MvcHtmlString MyCustomExtensionMethod(string foo) 
    { 
     ... 
    } 
} 

很明顯,因爲你不伸出的HtmlHelper你不再有機會獲得這限制了這樣的事情用處的HttpContext。

另一種可能性是modify the base class您所有的剃鬚刀視圖都來自於擴展WebViewPage並添加一個定製屬性,您可以在稍後編寫擴展方法。你必須問自己的問題是:它值得嗎?

個人而言,我覺得沒有錯/醜/不正確有關:

@Html.MyCustomExtensionMethod("abcd") 

或:

@Url.MyCustomExtensionMethod("abcd") 

這些都是在ASP.NET MVC的事實上的標準,每個開發人員都應該熟悉。使用Intellisense和自定義助手的可發現性也更容易。

+0

僅僅因爲你提到的原因(缺少HttpContext)而只做一個簡單的靜態類是不夠的。這實際上是鏈接在這篇文章的評論,你鏈接到幫助我http://develoq.net/2011/how-to-change-base-type-of-razor-view-engine-pages/ – mare 2011-03-08 22:42:34

+0

Html和Url助手都很好,但我希望將它們分組,例如一個類中的CSS助手,另一個腳本,即使我現在可以使用Html助手,我仍然希望將它們區分開來(可視化)。謝謝 – mare 2011-03-08 22:49:11

+0

菲爾哈克的這篇文章可能是這種可擴展性最完整的資源http://haacked.com/archive/2011/02/21/changing-base-type-of-a-razor-view.aspx – mare 2011-03-08 23:15:42

相關問題