C# Ajax调用传递的是控制器名和方法名,而不是数据

C# Ajax调用传递的是控制器名和方法名,而不是数据,c#,jquery,asp.net,ajax,asp.net-mvc,C#,Jquery,Asp.net,Ajax,Asp.net Mvc,我的ajax调用遇到了一些问题。以下是控制器代码: [Route("RatingInfo/HandleRequest")] [HttpPost] public ActionResult HandleRequest(Dictionary<string, string> textBoxValues) { var result = CreateJson(textBoxValues); // This is a simplified example return Json(

我的ajax调用遇到了一些问题。以下是控制器代码:

[Route("RatingInfo/HandleRequest")]
[HttpPost]
public ActionResult HandleRequest(Dictionary<string, string> textBoxValues)
{
    var result = CreateJson(textBoxValues); // This is a simplified example

    return Json(result);
}
这里的想法是从每个文本框中获取数据,并将其作为字典传递回服务器,id作为键,值也是值

通过Chrome调试器,JS数据对象成功构建

从调试器:

 Local
 data: Object
 dictionary[0].Key: "Address"
 dictionary[0].Value: "123 Main St"
 dictionary[1].Key: "ZipCode"
 dictionary[1].Value: "99999"
 dictionary[2].Key: "Phone1"
 dictionary[2].Value: "(555) 555-5555"
 ...
__proto__: Object
 textBoxValues = Count = 2
 [0] = {[controller, RatingInfo]}
 [1] = {[action, HandleRequest]}
但是,当数据传回控制器时,textBoxValues中的值不包含传递的数据。相反,它包含两个键/值对,其中键为controller和action,值为controller和action的名称

从Visual Studio调试器:

 Local
 data: Object
 dictionary[0].Key: "Address"
 dictionary[0].Value: "123 Main St"
 dictionary[1].Key: "ZipCode"
 dictionary[1].Value: "99999"
 dictionary[2].Key: "Phone1"
 dictionary[2].Value: "(555) 555-5555"
 ...
__proto__: Object
 textBoxValues = Count = 2
 [0] = {[controller, RatingInfo]}
 [1] = {[action, HandleRequest]}
如何让Jquery传递数据而不是控制器/操作名称?我很困惑,这怎么会在一开始就发生。任何帮助都将不胜感激。

更新

对不起,我输入了错误的代码

这不起作用的原因是参数的名称不正确,导致不匹配

以下内容适用于您。请注意,
dictionary
的名称已更改为您的参数
textBoxValues

function PassData() {
    var data = {};

    $('.divCell input').each(function (index, item) {
        var id = $(item).attr('id');
        var value = item.value;
        data['textBoxValues[' + index + '].Key'] = id;
        data['textBoxValues[' + index + '].Value'] = value;
    });

    $.ajax({
        url: '@Url.Action("HandleRequest")',
        type: 'POST',
        traditional: true,
        data: data,
        sucesss: function (result) {
            alert('Success');
        }
    })
}

谢谢你的回复!我试了你的建议,尽管结果是一样的。它似乎仍在以键/值对的形式传递控制器/操作。@Noahm888抱歉。我刚刚用我正在使用的示例更新了我的代码。对不起,刚在出去吃午饭时收到你的回复,我现在就试试。再次感谢您的帮助!成功了!非常感谢你。就像这些事情经常发生的那样,让我发疯。也感谢您解释这个问题,因为我现在对ajax的工作原理有了更好的理解。