在我的输入表单上,我让用户选择一个状态。状态列表存储在数据库中(因为我们还不支持每个状态)。此列表很少变化。
所以我想使用RenderAction
来呈现控件,因为我不想将每个ViewModel的状态列表传递给视图。这个动作的结果就是下拉。
由于这是一个输入控件,因此需要有一个名称。所以从我的主视图中我调用RenderAction如下:
@Html.RenderAction("GetStates", "Data", new { controlName = "states" });
传递controlName
感觉不对。我觉得我误用RenderAction
来创建用户控件,而@Html.Partial
更合适,另一方面我不想将状态列表传递给@Html.Partial
,因为那样信息与表达问题更相关。
问题我应该坚持使用RenderAction并按上述方式传递controlName吗?还是有更好的解决方案?
答案 0 :(得分:0)
将controlname作为参数传递没有任何问题。我会那样做的。
此外,您从数据库中获取的状态列表。如果您在页面上多次显示此列表...将其存储在TempData中。如果存在于tempdata中,则检索并使用它来保存数据库命中。你甚至可以把它缓存起来。