MVC中的自定义HTML帮助器类

时间:2011-03-08 22:27:54

标签: asp.net-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 个答案:

答案 0 :(得分: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中的事实标准,每个开发人员都应该熟悉它们。使用智能感知和自定义助手的可发现性也更容易。