关于Html帮助程序,数据访问代码也会进入帮助程序类吗?

时间:2011-12-06 20:57:24

标签: asp.net-mvc-3 html-helper

我正在编写一个帮助程序类来查询我的Zenfolio提要,返回并显示图像。现在,此代码在视图模型和控制器中的代码之间分配。我想将它打包成一个帮助类。是否所有代码都会进入帮助程序,或者我仍然将代码拆分到不同的类中,而帮助程序只响应生成html?我用谷歌搜索但没有找到我的问题的答案。

3 个答案:

答案 0 :(得分:3)

在MVC模式中,模型(数据),视图(html)和控制器(将模型赋予视图的内容)之间存在明显的分离。

要回答您的问题,请在编号中加载模型。在视图中显示它们。 Html Helpers只应为您的视图生成html。

您可能需要考虑使用DisplayTemplate,它允许您为特定类型的每个模型使用相同的View模板。

答案 1 :(得分:2)

我不会从视图中进行任何数据访问。这听起来像是一个很好的行动用例,并通过RenderAction方法重用代码。您可以使用[ChildActionOnly]属性将操作标记为子操作,这可确保无法直接从HTTP请求调用该操作,并返回PartialView结果。

HTML帮助器应该用于从ViewData或Model中获取的数据生成HTML标记(在本例中是您的视图模型)。

答案 2 :(得分:1)

HtmlHelper中的数据访问只是痛苦。

我很幸运地继承了一个项目,该项目在第二个开发人员的项目中将ad-hoc SQL放入HtmlHelpers中。 HtmlHelpers由第一个开发人员精心编写,并且ad-hoc SQL几乎取消了所有花费在面向服务的体系结构上的时间和精力,具有ORM(二级缓存变得毫无价值),工作单元模式(交易,毫无价值),以及设计的每个方面。最终,第二个开发人员必须制作越来越大的HtmlHelpers,以便不同的元素可以共享对数据的访问。

这最初是为显示模式完成的,编辑是通过一堆丑陋的自定义javascript完成的。总而言之,当页面呈现时,它对数据库进行了600次同步调用。