我的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 ..
在我的场景中,“控制器方法的返回类型应该仅是字符串”
我该如何解决?提前致谢 !!!
像这样的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) { } });