C# 将字典传递给控制器

C# 将字典传递给控制器,c#,asp.net-mvc-4,razor,asp.net-mvc-viewmodel,C#,Asp.net Mvc 4,Razor,Asp.net Mvc Viewmodel,我有一个ViewModel,我正试图传递给我的控制器,它包含一个字典。我能够在视图中正确显示所有内容,但是当我发布到我的控制器时,我从来没有通过StudentKeys字典,但是所有其他信息都可以通过 看法 视图模型 public class EditStudentAdultEdViewModel { public EditStudentAdultEdViewModel() { StudentKeys = new Dictionary<string,

我有一个ViewModel,我正试图传递给我的控制器,它包含一个字典。我能够在视图中正确显示所有内容,但是当我发布到我的控制器时,我从来没有通过StudentKeys字典,但是所有其他信息都可以通过

看法

视图模型

 public class EditStudentAdultEdViewModel
 {
     public EditStudentAdultEdViewModel()
     {
         StudentKeys = new Dictionary<string, string>();
     }
     public string DistrictCd {get; set;}
     public string SchoolCd {get; set;}
     public string IdentificationNbr{ get; set; } 
     public int DuplicateNbr { get; set; }
     public Dictionary<string, string> StudentKeys { get; set; }
     public string AdultEdAgencyCd { get; set; }
    }
公共类EditStudentAdultEdViewModel
{
public EditStudentAdultEdViewModel()
{
StudentKeys=新字典();
}
公共字符串区CD{get;set;}
公共字符串SchoolCd{get;set;}
公共字符串标识nbr{get;set;}
公共int DuplicateNbr{get;set;}
公共字典StudentKeys{get;set;}
公共字符串AdultEdAgencyCd{get;set;}
}

MVC已经为您将提交的所有内容放入字典中

public ActionResult BulkEditStudentRecordsAdultEd(FormCollection vm)
{
    // to access an item, do this:  vm["inputName"]
}
如果希望将默认modelbinder绑定到不同的词典中,可以通过使用正确名称的输入来实现:

<input type="hidden" name="vm[KeyString]" value="ValueString" />

有一个相对较旧的副本-,但我不确定是否应该将其关闭。
public ActionResult BulkEditStudentRecordsAdultEd(FormCollection vm)
{
    // to access an item, do this:  vm["inputName"]
}
<input type="hidden" name="vm[KeyString]" value="ValueString" />