我的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 ..
在我的场景中“控制器方法的返回类型应该只是字符串”
我该如何解决这个问题?提前致谢 !!!
答案 0 :(得分:5)
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) {
}
});