[英]ASP.NET MVC: When to use custom HTML helper methods vs Html.RenderAction?
关于何时使用自定义辅助方法以及何时使用RenderAction以及何时简单地使用ViewData,我有点不清楚。 它们的一些功能略有重叠。
例如,如果我要创建一个类别导航栏,我是否会创建一个新的辅助方法并将其放在某个局部视图中? 我最初虽然这样做,但我在一些博客上读到使用RenderAction代替。 我一直在思考,并且可以使用一些帮助而不仅仅是这个例子,但总的来说。
假设类别列表来自某些数据源。
我遵循的一般准则是:
HtmlHelper方法:
渲染部分:
渲染动作:
ViewData的:
我将使用ViewData来跟踪适用于所有视图的全局数据,例如当前用户。 如果我需要一种显示此数据的一致方法,我通常会为它创建一个部分,然后在母版页中执行RenderPartial()。
首先,这可能很清楚,但是我们可以这样说:类别业务逻辑(例如,从数据源获取数据)不应该在Html帮助程序中或在用户控件中:它应该在控制器中完成。
1)RenderPartial / HtmlHelper与2)RenderAction之间的区别在于该业务逻辑在哪个控制器中:
如果您在几乎每个页面中使用类别数据,我认为在页面控制器操作级别上为每个页面获取它并不是错误的,并将其传递给视图数据。 当然你会使用一些机制(自定义模型基类,扩展控制器......),这样你就不会在每个动作中都有相同的类别获取函数调用(假设你有很多)。
如果某些页面视图选择显示类别,有些不是,有些可能有另一个具有不同业务逻辑的类别控件,那么RenderAction肯定更好。 即使在上述情况下,RenderAction也很好:它将类别提取与控制器操作中的其他数据分开。
然后是否使用RenderPartial或HtmlHelper ......对我而言,HtmlHelpers应该更通用,而不是特定于特定视图或模型,但我认为,这比MVC视角中的明确规则更具品味:两者都应该只是View-逻辑。
当场景满足以下条件时,我会选择html辅助方法:
如果你有一个使用模型数据的html辅助方法,或者它有很多依赖项,那么它可能更适合作为RenderPartial或RenderAction。
我也是使用RenderAction的新手
但是当我需要为特定的显示器加载数据时,我现在使用RenderAction
非常适合加载标签云,标签云显示在每个页面上,但数据并非特定于页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.