ASP.NET MVC:使用Html.Partial还是Html.Action?

时间:2011-12-13 06:38:16

标签: asp.net-mvc razor partial-views

我的网站在布局中定义了导航栏。导航栏用于站点的多个视图中,并具有一些动态内容,这些内容是从数据库中的几个查询生成的。

我想知道渲染此菜单的最佳做法是什么(在局部视图中定义)。

据我所知,我可以通过两种方式做到这一点,每种方式都有一些优点和缺点:

使用Html.Action:  +它完全独立于使用布局的视图   - 它添加了一个额外的请求来呈现页面的一部分   - 我正在添加一个Action方法,它返回一个未从Ajax调用的Partial视图。

使用Html.Partial:  +渲染整个视图的简单请求   - 每个视图模型必须包含导航栏所需的信息

我非常感谢您对此的见解,因为我在我的网站上有几个这样的场景,我不确定哪一个是最好的。

谢谢!

1 个答案:

答案 0 :(得分:14)

我会使用Html.Action,特别是如果此菜单包含从数据库中提取的一些动态数据。优点是,您可以完全独立于主要操作完全分离此提取。此外,可以通过使用[OutputCache]属性对其进行装饰来缓存子操作的输出。通过这样做,如果数据不经常更改,您可以减少数据库的负载。

  

它添加了一个额外的请求来呈现页面的一部分

你一定误解了一些事情。客户没有其他要求。一切都在一个请求中提供。还有一个额外的控制器实例化和操作执行,但没有来自客户端的新HTTP请求。就好像在同一个请求中执行了2个控制器操作,并将它们的结果聚合到发送给客户端的单个HTML页面中。