繁体   English   中英

什么时候适合使用Html.RenderAction()?

[英]When Is It Appropriate to Use Html.RenderAction()?

我有点不确定何时使用Html.RenderAction()来渲染我的视图以及何时不使用它。 我的理解是,因为它不是ASP.NET MVC的“官方”组件,所以使用它是不好的做法,它的初衷是用于任何特定Controller上下文中都不存在的可重用小部件。

问题是,当我需要一个存在于不同Controller下的组件时,RenderAction非常有用,而不是我当前渲染View的那个。 我认为这是一种非常整洁和自包含的方式来呈现依赖于当前视图中不可用的数据的组件。 My View不需要提供Model,就像我使用RenderPartial()

这是不好的做法吗? 有没有更好的办法?

它可以解决你的问题。

我认为这是一种非常整洁和自包含的方式来呈现依赖于当前视图中不可用的数据的组件。 My View不需要提供Model,就像我使用RenderPartial()一样

它实际上是。 例如,您可以创建一些小视图作为小部件,并将它们注入到您需要的任何位置。 然而,从这些小部件处理用户输入可能甚至变得复杂,但这是另一个问题。

我能想到的另一个合法场景是使用HTML电子邮件模板。 这是一种情况,当您显然不需要将呈现的输出直接返回到浏览器,而是将其插入到电子邮件正文中。

我使用Html.RenderAction()是出于你给出的原因,这样你就不必一遍又一遍地向每个需要显示用户信息的视图提供相同的数据(例如)。 您可以认为它违反了mvc模式,因为视图现在知道控制器。 但我认为这种情况下的优势超过了这一点,您的应用程序将更加干燥。

我只是将它用于我需要在许多不同的地方重用的所有内容(例如我在主页的每个页面上显示的用户数据),我不想将这些信息显式发送到每个视图。 如果我没弄错的话,我认为他们也将它包含在asp.net mvc 2中,所以它现在已成为框架的一部分。

我发现一个很好的理由在基于父视图模型的结果的场景中使用Html.RenderAction。 例如,父视图的模型具有必须在表中显示的List属性。 但是,为了防止父视图中的条件IF / ELSE,我调用了Html.RenderAction()。 该操作接受List并检查计数。 如果计数为零,则返回“无结果”视图; 否则,它返回一个视图,以自己的模型的形式处理List中的项目。 通过防止在视图中插入逻辑,这是更清晰的。 我还可以在我的应用中为其他区域重复使用“无结果”视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM