将列表作为参数传递给 MVC 控制器

Pass List as parameter to MVC controller

我尝试在我的代码中到处做一件事情,但由于未知原因我不能在这里做。

我尝试将对象列表传递给我的控制器,但我无法将我的数组映射到我的列表中。

查看:

var interventions = [
    {
        Id: 1,
        Title: 'Intervention 1',
        ToDoBefore: new Date(),
        PlannedDate: new Date()
    },
    {
        Id: 2,
        Title: 'Intervention 2',
        ToDoBefore: new Date(),
        PlannedDate: new Date()
    },
]

$.ajax({
    url: '/Home/AffectToSubcontractors',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    type: 'POST',
    data: JSON.stringify(interventions),
    success: function (result) {
        debugger;
    }
});

控制器:

    public PartialViewResult AffectToSubcontractors(List<SelectedInterventionsViewModel> interventions)
    {
        // Do something
    }

型号:

public class SelectedInterventionsViewModel
{
    public int Id { get; set; }

    public string Title { get; set; }

    public DateTime ToDoBefore { get; set; }

    public DateTime PlannedDate { get; set; }
}

我想念什么?

我在你的代码中找不到任何遗漏的东西,但我已经尝试了你提到的相同代码并找到了集合。 C# 部分不能有错误,视图中可能存在一些问题。我在 index.chtml 上尝试了如下所示,请在干净的视图中尝试您的代码。

 @ViewBag.Title  Home
<div>     
    <div>
      <script >
          var interventions = [
    {
        Id: 1,
        Title: 'Intervention 1',
        ToDoBefore: new Date(),
        PlannedDate: new Date()
    },
    {
        Id: 2,
        Title: 'Intervention 2',
        ToDoBefore: new Date(),
        PlannedDate: new Date()
    },
          ]

          $.ajax({
              url: '/Home/AffectToSubcontractors',
              contentType: 'application/json; charset=utf-8',
              dataType: 'json',
              type: 'POST',
              data: JSON.stringify(interventions),
              success: function (result) {
                  debugger;
              }
          });
      </script>
    </div>
</div>

我的控制器方法上的 [HttpPost] 装饰解决了这个问题。不要问我为什么。通常我不设置它并且它有效。为什么调用了方法但没有发送参数?我也不知道...