2012-07-24 59 views
1

在我的输入窗体上,我让用户选择一个状态。状态列表存储在数据库中(因为我们还不支持每个状态)。此列表更改很少。使用RenderAction渲染用户控件

所以我想用RenderAction来渲染控件,只是因为我不想将每个ViewModel的状态列表传递给视图。这个行动的结果是一个下降。

由于这是一个输入控件,它需要一个名称。所以从我的主视图我打电话的RenderAction如下:

@Html.RenderAction("GetStates", "Data", new { controlName = "states" }); 

传递controlName感觉不对。我觉得我误用RenderAction来创建用户控件,而@Html.Partial会更合适,另一方面,我不想将状态列表传递给@Html.Partial,因为该信息与呈现方面的问题更相关。

问题我应该如上所述坚持使用RenderAction并传递controlName吗?还是有更好的解决方案?

回答

0

将controlname作为参数传递没有任何问题。我会去那。

此外,您从数据库中获得的状态列表。如果您在页面上多次显示此列表...将其存储在TempData中。如果存在于tempdata中,则检索并使用它保存数据库命中。你甚至可以将它缓存得更高。

+0

这就是意图,使用RenderAction可以让我使用开箱即用的Cache属性。 – 2012-07-24 22:03:32

+0

嗯,我会看看。最后我听说你不能使用Cache Attr和部分视图。如在,它不会缓存 – 2012-07-24 22:06:28

+0

我的不好,[OutputCache(持续时间= 3600)]不缓存attr – 2012-07-24 22:20:38