我应该何时编写HTML帮助程序作为扩展方法而不是简单的静态方法?

时间:2011-11-16 19:29:21

标签: asp.net-mvc html-helper

在ASP.NET MVC中有两种创建自定义HTML帮助程序的方法:

  1. 您可以使用输出HTML的静态方法创建一个类,或者
  2. 您可以向HtmlHelper类添加扩展方法。
  3. 选项#1似乎更简单,更容易。

    • 选项#2有什么好处?
    • 我想什么时候做而不是选项#1?
    • 选项#2是否为您提供任何好处或增加的功能?

    编辑添加:

    在这种特殊情况下,我试图输出一串通过一系列条件逻辑形成的字符串。将它放在我的模型中似乎是错误的,但在Razor中完成这一切似乎很乏味且不必要 - 或者我错了吗?

2 个答案:

答案 0 :(得分:0)

我发现编写HTML的选项2更清晰,因为它与C#代码分开。在实际的剃刀视图中,您应该放置HTML。

这假设您在谈论razor中的@helper语法

答案 1 :(得分:0)

在我们当前的项目中,我们开始做大量的HtmlHelper扩展,但我们意识到这是错误的做法,主要是因为:

  • 它破坏了模式,因为你在视图之外通过C#代码编写HTML。
  • 这根本不是验证友好!!

所以我们简单地抛弃了所有这些帮助器,并且我们为所有控制器实现了ViewModels和模板。这是正确的做法。

这是最好的起点:ASP.NET MVC 2 Templates, Part 1: Introduction

总而言之,如果您通过代码构建HTML,那么项目的逻辑/模式就会出现问题。