Asp.net mvc ASP.NET MVC-调用操作时如何保持集合值?

Asp.net mvc ASP.NET MVC-调用操作时如何保持集合值?,asp.net-mvc,collections,viewmodel,Asp.net Mvc,Collections,Viewmodel,我有这样一个ViewModel: public class MyViewModel { public string SelectedItem { get; set; } public List<MyClass> Items { get; set; } } @{ var ind = 0; foreach(var item in Model.Items) { <input type="hidden" name="Items[@ind]

我有这样一个ViewModel:

public class MyViewModel
{
    public string SelectedItem { get; set; }
    public List<MyClass> Items { get; set; }
}
@{
   var ind = 0;
   foreach(var item in Model.Items)
   {
      <input type="hidden" name="Items[@ind].Id" value="@item.Id"/>
      ind++;
   }
}
公共类MyViewModel
{
公共字符串SelectedItem{get;set;}
公共列表项{get;set;}
}
我在屏幕上用
@Html.DropDownListFor(m=>m.SelectedItem,new SelectList(…)
填充这些项目

好的,但是当我调用任何接收这个ViewModel的操作时,我得到的集合是空的。
当我调用任何操作时,是否有方法返回DropDownList值?

一种方法是将
列表作为视图模型的一部分,并通过从控制器调用的方法填充它并将其传递给视图,例如

视图模型:

public List<SelectListItem> SelectList { get; set; }

在标签
表单中
只能发送标签
选择
中选择的值,在这种情况下,
选择项的值
。 如果需要,还可以发送值列表​​对于
,您必须创建如下内容:

public class MyViewModel
{
    public string SelectedItem { get; set; }
    public List<MyClass> Items { get; set; }
}
@{
   var ind = 0;
   foreach(var item in Model.Items)
   {
      <input type="hidden" name="Items[@ind].Id" value="@item.Id"/>
      ind++;
   }
}
@{
var-ind=0;
foreach(Model.Items中的var项)
{
ind++;
}
}

但是您可以通过
Ajax
发送数据,在这种情况下,模式很简单,因为您可以创建要发送的数据。请参阅此插件,这是一种正常行为,也是HTML的工作方式。只有
元素的选定值才会发送到服务器,而不是整个集合。在POST操作中,如果您想要检索集合,那么您所要做的就是与GET操作中检索集合时所做的完全相同。这通常是一个数据库调用。如果您担心经常访问数据库,只需缓存集合。

酷。多次访问数据库使我的性能变差。缓存是一个很好的解决方案。谢谢