好的情况是我在索引页面上。我有一个jQuery onClick事件如下:
$('#example').on('click', 'tr', function (e) {
var aData = oTable.fnGetData(this);
showCampaign(aData);
});
我已经确认此函数正在按预期工作,并且aData最终填充了一个数组,该数组包含来自单击的表行中每个单元格的数据。
我需要做的是当这个点击甚至发生时,将aData发送到我的MVC并加载一个我可以填充该数据的新视图。这就是我目前正在尝试的......
function showCampaign(aData) {
$.ajax({
type: "POST" ,
url: "Test/Show",
data : aData
}).done(function (response) {
window.location.href = response.Url;
}).error(function (jqxhr, textstatus, errorthrown) {
alert("didn't work");
});
};
这个功能起作用......它确实向我的MVC发送请求......但是我没有看到数据通过(它为null),当我返回响应字符串时,页面没有加载。 / p>
我的Controller类中的方法如下所示:
[HttpPost]
public ActionResult ShowCampaign(String[] aData)
{
var redirectUrl = new UrlHelper(Request.RequestContext).Action("TestView","Test");
return Json(new {Url : redirectUrl });
}
出于上述目的,TestView是我要加载的View的名称,Test是Controller。
我在这里做错了什么..我试图理解MVC,但我还没有得到它......光还没有点击。
答案 0 :(得分:1)
这里的问题是你没有命名参数。如果你说aData是一个数组,你必须将它包装到一个对象中。该属性应与控制器方法的参数名称匹配。
function showCampaign(aData) {
$.ajax({
type: "POST" ,
url: "Test/ShowCampaign",
data: { aData: aData }
}).done(function (response) {
window.location.href = response.Url;
}).error(function (jqxhr, textstatus, errorthrown) {
alert("didn't work");
});
};
您可能会觉得有用的另一个提示。您可以使用Url.Action()
生成您的网址。 http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.action(v=vs.108).aspx