.net ASP MVC HTML帮助程序-好还是坏?

.net ASP MVC HTML帮助程序-好还是坏?,.net,asp.net-mvc,html-helper,.net,Asp.net Mvc,Html Helper,我理解在ASP.NET MVC中使用HTML帮助程序并扩展它以提供您自己的帮助程序的原因,但我想知道使用HTML帮助程序是否是一个好主意 我认为ASP.NETMVC的好处之一是可以控制HTML。如果你开始把它隐藏在生成HTML的助手函数中,你不会开始失去可见性吗?我想当您生成简单控件(如按钮)时,这并不是一个问题,但我已经看到了使用html助手创建网格和更复杂的html输出 现在我也明白这样做的原因是为了保持干燥,避免重复。但是这里有没有类似于代码的危险?此外,如果您与设计师合作,该怎么办?通常

我理解在ASP.NET MVC中使用HTML帮助程序并扩展它以提供您自己的帮助程序的原因,但我想知道使用HTML帮助程序是否是一个好主意

我认为ASP.NETMVC的好处之一是可以控制HTML。如果你开始把它隐藏在生成HTML的助手函数中,你不会开始失去可见性吗?我想当您生成简单控件(如按钮)时,这并不是一个问题,但我已经看到了使用html助手创建网格和更复杂的html输出

现在我也明白这样做的原因是为了保持干燥,避免重复。但是这里有没有类似于代码的危险?此外,如果您与设计师合作,该怎么办?通常,设计师将创建标记并应用样式。如果您开始向视图中注入生成标记的帮助程序,这是否会使这种协作变得困难?

“对HTML的控制”是microsoft市场营销的重点,也是他们选择给平台打上品牌的方式。ASP.net MVC的要点是,它比webforms的整个有状态事件驱动模型更简单,更适合于webapps,而微软以外的几乎所有人多年前都采用了这种模型。不过微软不能这么说,因为他们在webforms上有巨大的投资,这是他们企业故事的关键部分

这就是说,如果您的助手中有业务逻辑,那么您就是在错误地使用它们。它基本上只是在多个页面上复制的表示逻辑的代码,目标是使标记中的scriptlet标记尽可能简单


只要您按照应该使用的方式使用帮助程序,设计师就可以轻松地学习如何使用它们。只要记住,目标是让事情简单化,如果它们最终使事情变得更复杂,那就意味着它们没有被正确地使用。

评论不错,马特。还有一个问题是,在“纯”MVC实现中,HTML助手是否是一个好主意。我认为这是一个神奇的词,“纯洁”。每当我慢下来思考“正确”的做事方式时,我真的在尝试看一种特定的方法是否符合纯粹主义者的愿景。那么,纯粹主义者会使用HTML助手吗


我是个8/10的纯粹主义者,我不会用它们。我已经看到这种观点超越了技术,并在PHP和Zend框架中提出了MVC的问题。对我来说,这是最好的办法。

帮手绝对没有错。它们用于保持视图的干净性和声明性。有一句谚语是这样说的:“如果在你看来有一个“如果”的说法,你就错了。”。它们被许多著名的MVC框架使用,比如RubyonRails和CakePHP。退房不管是“纯粹主义者”还是“非纯粹主义者”,助手都是一件好事,不要与糟糕的实践或漏洞百出的抽象概念混淆。

我认为其他人没有提到的一个重要问题是您的观点的可移植性

您可以立即将HTML、javascript和CSS移动到另一个平台上的应用程序。你不必转换所有丑陋的HTMLhider。。对不起,HTMLHelpers。。到实际的HTML

虽然我非常重视减少开发时间、简化工作的.NET框架,但我强烈认为视图应该是非专有的


无论如何,您都可以从模型和控制器中的框架中获得几乎所有的好处。我认为,在表示层中注入对框架的依赖根本不值得权衡。

MVC模式中没有任何东西表明不能使用帮助函数生成模板标记代码。MVC只讨论关注点的分离。只要您的助手函数没有违反关注点的边界,那么MVC对此就无话可说。从严格的模式角度来看,这种“纯粹的”MVC并不存在,因为它没有涉及MVC的任何方面。这些助手纯粹是视图的一个功能(MVC中的V)。只要助手没有违反MVC的关注点,也就是说,他们正在做的事情不是表示逻辑,那么他们就没有任何问题。是的,一些复杂的助手实际上可能违反了关注点分离的规定,但这与助手本身是好是坏是完全不同的。