jQuery post array - ASP.Net MVC 4

Sil*_*ent 15 c# asp.net asp.net-mvc jquery

今天我花了8个小时左右试图解决这个问题.我已经查看了很多解决方案,但无法获得相同的结果.我有一个预感,它与ASP.Net相对较新有关.

这是我试图模仿的最新问题,没有运气. /sf/ask/700540571/# =

如何使用JSON,jQuery向ASP.NET MVC Controller发布复杂对象数组?

问题的基本概述:我有一个json对象数组,我想传递给我的控制器.当我传递它显示的数据时,例如可以说3个项目,但是它们的值没有传递,或者只是显示没有传递任何内容.Firebug显示它已通过它所以我认为某些东西设置不正确并且它不允许它在C#端正确设置该变量.

我尝试了一些事情并列出下面的错误:设置1:我试着嘲笑我在第二个链接上看到的内容:

$.ajax({
        type: 'Post',
        cache: false,
        url: '/Workflow/Home/UpdateStepPositions',
        data: { 'steps': ['1','2','3'] },
        async: false,
        success: function (data) {
            console.debug(data);
        },
        error: function (data) {
            console.debug(data);
        }
    });

 Controller
 [HttpPost]
    public ActionResult UpdateStepPositions(string[] steps){

        var bresults = new {
            Success = false,
            Message = "Unable to update step positions."
        };

        return Json(bresults);
    }
Run Code Online (Sandbox Code Playgroud)

我甚至无法让这个简单的设置工作..它到达功能并显示没有任何传递....

设置2:

 list = new Array();
    list.push({ "step": 1, "position": 1 });
    list.push({ "step": 2, "position": 2 });
    list.push({ "step": 3, "position": 3 });

    $.ajax({
        type: 'Post',
        cache: false,
        url: '/Workflow/Home/UpdateStepPositions',
        data: JSON.stringify({ 'steps': list }),
        async: false,
        success: function (data) {
            console.debug(data);
        },
        error: function (data) {
            console.debug(data);
        }
    });

    Controller
   [HttpPost]
    public ActionResult UpdateStepPositions(List<UpdatedSteps> steps){
        var bresults = new {
            Success = false,
            Message = "Unable to update step positions."
        };

        return Json(bresults);
    }

   Class
   public class UpdatedSteps {
    public string Step { get; set; }
    public string Position { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以对我所缺少的东西有所了解或指出我正确的方向吗?希望它简单而且只是一个新手的错误!

web*_*per 38

MVC检测contentType接收的数据类型.这是工作示例:

$(function () {
    $.ajax({
        type: 'Post',
        dataType: 'json',
        url: '/Workflow/Home/UpdateStepPositions',
        data: JSON.stringify({ steps: ['1', '2', '3'] }),
        contentType: 'application/json; charset=utf-8',
        async: false,
        success: function (data) {
            console.debug(data);
        },
        error: function (data) {
            console.debug(data);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

现在一切都好了请求:

Content-Type:        application/json; charset=utf-8
X-Requested-With:    XMLHttpRequest
Run Code Online (Sandbox Code Playgroud)

和回应:

Content-Type:        application/json; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

  • 对于POST请求,cache:false属性无效:http://api.jquery.com/jQuery.ajax/.但是,好帖子,它帮助了我!+1 (2认同)