使用asp.net mvc从ajax请求中获取数据

使用asp.net mvc从ajax请求中获取数据,ajax,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-2,asp.net-ajax,Ajax,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 2,Asp.net Ajax,我希望使用请求ajax将所有数据放入一个对象中 这些数据通过一个函数进入我的控制器。 在我的数据标题中,我有以下信息: 我创建了4个对象,但所有数据(克、乳液和其他)都等于null或零。 但是数据注释和其他数据没关系,这是有效的 谢谢你的帮助 我的请求: var params={}; var allStep21 ={allData..} $.extend(params,allStep21); $.ajax({ type: "POST", url: "Request",

我希望使用请求ajax将所有数据放入一个对象中

这些数据通过一个函数进入我的控制器。 在我的数据标题中,我有以下信息:

我创建了4个对象,但所有数据(克、乳液和其他)都等于null或零。 但是数据注释和其他数据没关系,这是有效的

谢谢你的帮助

我的请求:

var params={};
var allStep21 ={allData..}
$.extend(params,allStep21);
 $.ajax({
    type: "POST",
    url: "Request",
    data: params,
});
在html标题中:

allPly[0][Gramme]:10
allPly[0][Toto]:White
allPly[0][Test]:None
allPly[0][Lotion]:1
allPly[1][Grammage]:11
allPly[1][Toto]:White
allPly[1][Test]:Fine
allPly[1][Lotion]:0
OtherData : 585
Comment: all it's ok
在我的控制器中:

[HttpPost]
public ActionResult Request(AllStep21 allStep21)
{
}
在我的模型中:

public class AllStep21
{
    public String OtherData { get; set; }
    public String Comment { get; set; }
    public List<allPly> allPly { get; set; }
}
public class allPly
{
    public int Gramme { get; set; }
    public String Toto { get; set; }
    public String Test { get; set; }
    public int Lotion { get; set; }
}
公共类所有步骤21
{
公共字符串OtherData{get;set;}
公共字符串注释{get;set;}
公共列表allPly{get;set;}
}
公共类
{
公共整数文法{get;set;}
公共字符串Toto{get;set;}
公共字符串测试{get;set;}
公共int-Lotion{get;set;}
}

您需要的是实现您自己的模型绑定器。请查看以下链接:


我希望它能有所帮助。

您可以使用JSON请求,它允许您向控制器操作发送任意复杂对象:

var params = { 
    allStep21: { 
        comment: 'some comment', 
        otherData: 'some other data',
        allPly: [
            { toto: 'toto 1', test: 'test 1', lotion: 1, gramme: 1 },
            { toto: 'toto 2', test: 'test 2', lotion: 2, gramme: 2 }
        ]
    } 
};

$.ajax({
    url: 'Request',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(params),
    success: function(result) {
        alert('successs');
    }
});

这里显示的
JSON.stringify
方法是所有现代浏览器的内置方法。但是,如果您需要支持传统浏览器,则需要包含脚本。

如果您指定内容类型为json(contentType:“application/json”)并使用数据:json.stringify(params)?-1,则他不需要实现任何自定义绑定器。对于框架支持的开箱即用的东西来说,工作量太大了。首先,感谢您的帮助。我有一个错误,当我输入“contentType:'application/json;charset=utf-8”并发送请求时,我有一个错误:已经添加了一个具有相同密钥的项…?您在哪里有这个错误?你在服务器上做什么?我怀疑您的问题与AJAX请求中发送数据的方式无关。这应该可以正常工作,并且应该正确填充
allStep21
操作参数。下一步处理这些数据是完全不同的。当我点击一个按钮时,参数是create and request Ajax never send,我有这个错误。我在我的控制器中设置了一个函数的断点,但我从未出现过…如果我删除了line contentType,我在发送请求时不会出错…您的模型是否与您在问题中所显示的完全相同?如果是这样的话,这应该是可行的。您在哪里看到这个错误?在FireBug?中,我看到您已经更新了问题和
allPly
模型。
grame
属性是一个简单的整数,而不是整数数组。这就是它不起作用的原因。我更新了我的答案,以反映这一变化。