MVC模型绑定对象列表

Ale*_*eks 14 c# ajax asp.net-mvc jquery

我无法绑定包含对象列表的模型.当我尝试将数据从控制器传递到视图时没有问题,但是当我想要发回数据时,我得到一条消息,表明该方法不存在.

我正在使用ajax调用,并且作为数据我放了$ form.serialize()并且可以看到包含fiddler中所有数据的列表,但是我对绑定没有运气.

该模型是:

public class Single
{
   public int Id {get;set;}
   public string Name {get;set;}
   public List<SimpleDropdown> dddl {get;set;}
   public int SelectedEmp {get;set;}
}
public class MainModel
{
   public List<Single> main_model_list {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,现在的方法是:

[HttpPost]
public string SaveModel(MainModel model)
{
   return "";
}
Run Code Online (Sandbox Code Playgroud)

此方法不会被调用,但是当我删除调用的参数时.所以我确定绑定不起作用.我有一个更复杂的模型,但我尽可能简化它,仍然无法让它工作.

所以我的问题是如何测试这个以查看问题是什么?

编辑:

我目前没有代码,但该代码功能正常,因为我在项目的其他地方使用它.它是这样的:

$("#form").submit(function( ) {
      $.ajax({
        url: "/Controller/SaveModel",
        type: "POST",
        data: $(this).serialize()
    });
});
Run Code Online (Sandbox Code Playgroud)

表单看起来像这样:

@using (Html.BeginForm("SaveModel", "Home", FormMethod.Post, new { id = "form" })) 
{
    @for (var z = 0; z < ViewBag.groupes.Length; z++)
    {
        <div style="border-left: 1px solid black">
            <h1>@ViewBag.groupes[z]</h1>
        </div>
    }
    @for (var i = 0; i < Model.main_model_list.Count; i++)
    {
        <div>@Html.LabelFor(x => x.main_model_list[i].Id)</div>
        <div>@Html.LabelFor(x => x.main_model_list[i].Name)</div>
        <div style="float: left">@Html.DropDownListFor(x => main_model_list[i].SelectedEmp, new SelectList(main_model_list[i].dddl, "Id", "Value", main_model_list[i].SelectedEmp), new { @class = "preferences_dd_lists" })</div>
    }
}
Run Code Online (Sandbox Code Playgroud)

kei*_*itn 1

请尝试以下操作:

$("#form").submit(function( ) {
      $.ajax({
        url: "/Controller/SaveModel",
        contentType: "application/json",
        type: "POST",
        data: $(this).serialize()
    });
});
Run Code Online (Sandbox Code Playgroud)