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

时间:2017-03-16 17:04:18

标签: jquery asp.net-mvc-3

我尝试在我的代码中执行无处不在的操作,并且由于未知原因我无法在此处执行。

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

查看:

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; }
}

我想念的是什么?

3 个答案:

答案 0 :(得分:0)

我在代码中找不到任何遗漏但我尝试了你提到的相同代码并找到了该集合。 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>

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我的控制器添加了[HttpPost]装饰也是我的答案。还要添加&#34; contentType&#34;和&#34; dataType&#34;到ajax电话很重要!

$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/api/DoTheAction/post/' + actionSP,
data: JSON.stringify(OrderNr),
success: function (response) {
    if (response.success) {
        alert(response.responseText);
},

});