ASP.NET MVC。扩展HtmlHelper与Custom类

时间:2010-02-16 10:36:44

标签: asp.net asp.net-mvc

扩展HtmlHelper而不是创建自定义类有什么好处。

f.e。 <%= Html.Table(data)%> vs<%= CustomClass.Table(data)%>

2 个答案:

答案 0 :(得分:3)

因为HTML帮助器已经定义了一组在自定义类中没有的有用方法,最重要的是您可以访问HttpContext。当然你可能会说为什么不把HttpContext传递给我的自定义类,但是后来代替<%= CustomClass.Table(data) %>你会有<%= CustomClass.Table(data, HttpContext) %>恕我直言。

答案 1 :(得分:2)

就像你建议的那样,HtmlHelper类只是一个.NET方法,它返回一个字符串(通常由HTML标记组成)。因此,从技术上讲,与编写自定义类来做同样的事情并没有什么不同。

但是,使用HtmlHelper而不是编写自定义类的主要好处是遵循将HTML控件呈现为ASP.NET MVC视图的 传统 方法。通过使用/扩展HtmlHelpers,您的方法更倾向于为控件输出HTML标记。如果您编写了一个自定义类来执行相同的操作,那么用于呈现HTML控件的意图就不那么明显了,而其他开发人员可能不会轻易发现它。

许多人认为ASP.NET MVC的一个关键原则是支持 *约定优于配置* 。通过使用HtmlHelpers,您将遵循该原则。