小编典典

使用jquery post将Dictionary数据传递到Controller字符串方法

ajax

我的jQuery代码如下

 $("#btnExec").live('click', function () {
       var data1= "lorem ipsum";
       var data2= "lorem ipsum";
       var data3= "lorem ipsum";
       var dict = new Object();

       $("#ArgsTable tr").each(function (e) {
                var firstTD = $(this).find("td").eq("0").html().trim().replace(/\s/g, "");
                var secondValue = $(this).find("td").eq("1").find("input:text").val();
                dict[e] = [firstTD,secondValue]; 
       });

       $.ajax({
                type: 'POST',
                cache: false,
                data: { strdata1: data1, strdata2: data2, strdata3: data3, myDictionary: dict },    
                url: '<%=Url.Action("ExecData","Home") %>',
                success: function (data) {        
                }
              });
 });

我的控制器方法如下

public string ExecData(string strdata1, string strdata2, string strdata3,  Dictionary<object, object> myDictionary)
{
    //do some stuff...
}

如果我单击 btnExec的 意思是,它用字符串值正确触发了控制器方法,但是字典值始终为 null ..

在我的场景中,“控制器方法的返回类型应该仅是字符串”

我该如何解决?提前致谢 !!!


阅读 335

收藏
2020-07-26

共1个答案

小编典典

像这样的Tyr:

[HttpPost]
public ActionResult ExecData(
    string strdata1, 
    string strdata2,  
    string strdata3, 
    Dictionary<string, string> myDictionary
)
{
    return Content("hello world");
}

然后:

var data = {
    strdata1: 'lorem ipsum',
    strdata2: 'lorem ipsum',
    strdata3: 'lorem ipsum'
};

$('#ArgsTable tr').each(function (index, item) {
    var firstTD = $(this).find('td').eq(0).html().trim().replace(/\s/g, '');
    var secondValue = $(this).find('td').eq(1).find('input:text').val();
    data['myDictionary[' + index + '].Key'] = firstTD;
    data['myDictionary[' + index + '].Value'] = secondValue;
});

$.ajax({
    url: '<%=Url.Action("ExecData","Home") %>',
    type: 'POST',
    traditional: true,
    data: data,
    success: function (result) {

    }
});
2020-07-26