通过回发维护SelectList选项

时间:2011-09-22 21:02:47

标签: asp.net-mvc-3 razor

我想知道是否有一种方法可以在MVC 3中的选择列表上维护您的选项列表。我对MVC很新,但在WebForms中,您可以在第一次加载页面时填充DropDownList,然后填充ViewState将维护所有AutoPostBacks的列表。这很好,因为通常,DropDownLists由对数据库的查询填充。我知道在MVC中不存在ViewState,但有没有更好的方法来重新填充SelectList,而不必在每个帖子的请求期间点击数据库?

2 个答案:

答案 0 :(得分:1)

这里有几个选项。 您选择的值将被回发。考虑到这一点,因为你不再拥有ViewState,你理想地想要

  1. 让您的存储库(如果您没有 - 创建一个。您只需要在存储库中查询数据并控制缓存或加载)您在下拉列表中请求数据,缓存数据并只是请求它再次。重新绑定列表(使用DropDownFor)
  2. 使用MVCContrib的Html.Serialize实质上是ViewState,但缓存更清晰,并且不依赖于来回发送的数据。
  3. 还要记住,在发布数据后,如果一切都“良好”,您希望重定向回“GET”操作以重新加载数据并显示给客户端。这是Web表单中的一个问题,有时用户在回发后看到了XYZ,但在刷新后看到了YXX。在MVC post-redirects中使用PRG模式可以加载新数据。

    发布后,如果出现验证错误,通常只会重新显示数据,否则会重定向到get方法。

答案 1 :(得分:0)

您的控制器会在回发时收到该值。您必须将该值放回模型中,以告知视图所选值是什么。