ASP.NET MVC:何时使用自定义HTML帮助程序方法与HTML.RenderAction?
对于我来说,什么时候使用自定义帮助器方法、什么时候使用渲染以及什么时候只使用ViewData都有点不清楚。它们的一些功能略有重叠 例如,如果我要创建一个类别导航栏,我会创建一个新的助手方法并将其放置在某个局部视图中吗?我最初想这样做,但我在一些博客上读到使用渲染。我一直在反复思考,不仅在这个例子中,而且在一般情况下,我可能需要一些帮助ASP.NET MVC:何时使用自定义HTML帮助程序方法与HTML.RenderAction?,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,对于我来说,什么时候使用自定义帮助器方法、什么时候使用渲染以及什么时候只使用ViewData都有点不清楚。它们的一些功能略有重叠 例如,如果我要创建一个类别导航栏,我会创建一个新的助手方法并将其放置在某个局部视图中吗?我最初想这样做,但我在一些博客上读到使用渲染。我一直在反复思考,不仅在这个例子中,而且在一般情况下,我可能需要一些帮助 假设类别列表来自某个数据源。当场景满足以下条件时,我会选择html助手方法: 参数不被视为模型数据 它不必生成过多的标记 html可以只使用给定的参数生成 如果您
假设类别列表来自某个数据源。当场景满足以下条件时,我会选择html助手方法:
如果您有一个使用模型数据的html助手方法,或者它有很多依赖项,那么作为RenderPartial或RenderAction可能会更好。我对使用RenderAction也很陌生 但是当我需要为一个特定的显示加载数据时,我现在就使用 渲染 非常适合加载标签云,标签云显示在每一页上,但数据并非特定于某一页。我遵循的一般准则是: HtmlHelper方法:
我将使用ViewData跟踪应用于所有视图(如当前用户)的全局数据。如果我需要一种一致的方式来显示这些数据,我通常会为其创建一个partial,然后在母版页中执行RenderPartial()。首先,这可能很清楚,但可以这样说:类别业务逻辑(例如,从数据源获取数据)不应该在Html帮助程序或用户控件中:它应该在控制器中完成 1)RenderPartial/HtmlHelper与2)RenderAction的区别在于此业务逻辑在哪个控制器中:
然后是使用RenderPartial还是HtmlHelper。。。对我来说,HtmlHelper应该更通用,而不是特定于特定的视图或模型,但我认为,这更多的是品味问题,而不是MVC角度的明确规则:两者都应该只是视图逻辑。你说的是HtmlHelper的扩展方法,对吗?是的,HtmlHelper上的扩展方法。大多数人都同意,附带条件是,当您需要在每个页面中封装一个区域时,RenderAction会更好,并且您不希望为了支持RenderPartial而在每个控制器中重复推送相同的数据(并污染ViewModel对象)。因为RenderAction使用它自己的控制器,所以它更独立,因此更可重用;体现了所有描述领域的良好实践。同意。。。很好的崩溃。我要补充的是,呈现操作通过URI使资源可用。这本身可能是一个理想的(或不太理想的)功能。@jhorback:我的理解是,使用[ChildActionOnly]将阻止通过URI直接访问资源。当您需要一个类似asp控件的帮助函数,并且包含一些业务逻辑,因为您希望在许多项目中重用它时,您会怎么做?是否创建控制器并从帮助器访问它?