Asp.net mvc 为什么不通过post将收藏传递给用户?

Asp.net mvc 为什么不通过post将收藏传递给用户?,asp.net-mvc,Asp.net Mvc,我有一个强类型视图模型MyViewModel,它的结构如下: public name { get; set; } public IEnumerable<Country> { get; set; } 当调用索引时,一切正常,我能够在DropDownList for调用中使用countries IEnumerable。但是,当我提交表单时,向控制器发布如下内容: public ActionResult Index(MyViewModel model) 我只能从模型中访问简单的变量;字

我有一个强类型视图模型MyViewModel,它的结构如下:

public name { get; set; }
public IEnumerable<Country> { get; set; }
当调用索引时,一切正常,我能够在DropDownList for调用中使用countries IEnumerable。但是,当我提交表单时,向控制器发布如下内容:

public ActionResult Index(MyViewModel model)

我只能从模型中访问简单的变量;字符串、int、decimal、bool等。任何IDictionAress或IEnumerables均为空。我见过一些例子,人们只是从他们的数据访问调用中重新绑定列表,但是当你一开始就有数据时,这看起来很愚蠢。当我有两个多选框时,用户可能会将项目从一个框移动到另一个框,这尤其令人恼火。如果他们提交并验证失败,我将丢失他们对方框所做的更改。是否有办法解决此问题?

asp.net mvc仅将通过不同表单字段发布的那些值绑定到模型,如果未配置为其他方式,则选择List posts only when value。因此,将绑定到列表的唯一值是视图模型中的name属性。数据

IEnumerable<Country> countries

必须在操作后结果中再次填写,以防出现错误。至于你的第二点,我相信它不会发生在你发布的代码中。你的下拉列表应该发布多个值,如果这些值会映射到模型的IEnumerable属性。您可以发布代码,以便我们提供帮助

这基本上就是导致问题的代码-减去我调用实际存储库的事实,而不是一些GetCountries方法。我分配一个IEnumerable,将其传递给模型构造函数,返回一个视图,然后发布到另一个需要该模型的操作;当我这样做的时候,我的IEnumerable是空的。你能编辑你的问题来发布你试图发布的视图代码吗
public ActionResult Index(MyViewModel model)
IEnumerable<Country> countries