使用RenderAction呈现用户控件

时间:2012-07-24 21:48:07

标签: asp.net-mvc

在我的输入表单上,我让用户选择一个状态。状态列表存储在数据库中(因为我们还不支持每个状态)。此列表很少变化。

所以我想使用RenderAction来呈现控件,因为我不想将每个ViewModel的状态列表传递给视图。这个动作的结果就是下拉。

由于这是一个输入控件,因此需要有一个名称。所以从我的主视图中我调用RenderAction如下:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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