Asp.net mvc 3 在回发上维护SelectList选项

Asp.net mvc 3 在回发上维护SelectList选项,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我想知道是否有办法在MVC3的选择列表中维护您的选项列表。我是MVC新手,但在WebForms中,您可以在第一次加载页面时填充DropDownList,然后ViewState将为所有自动回发维护该列表。这很好,因为DropDownLists通常由对数据库的查询填充。我知道MVC中不存在ViewState,但是有没有更好的方法来重新填充SelectList,而不必在每次post请求时点击数据库?您的控制器在回发时接收值。您必须将该值放回模型中,以告诉视图所选值是什么。您在这里有几个选项。 您选择的

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

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

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

  • 让你的存储库(如果你没有-创建一个。你只需向存储库请求数据,它控制缓存或加载)在下拉列表中请求数据,缓存数据,然后只需再次请求。重新绑定列表(使用下拉列表)
  • 使用MVCContrib的Html.Serialize基本上可以查看状态,但是缓存更干净,不依赖于来回发送的数据
  • 还要记住,在发布数据后,如果一切正常,您希望重定向回“获取”操作以重新加载数据并显示给客户端。这是web表单中的一个问题,有时用户在回发后看到XYZ,但在刷新后看到YXX。在MVC posts中使用PRG模式重定向可以加载新数据


    发布后,通常只有在出现验证错误时才应重新显示数据,否则应重定向到get方法。

    我认为类似的方法才是答案。我想我只是被用ViewState维护状态的WebForms和控件宠坏了。谢谢你的回复。