0

好的,情况是我在我的索引页面上。我有一个 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),并且当我返回响应字符串时,页面没有加载。

我的 Controller 类中的方法如下所示:

[HttpPost]
public ActionResult ShowCampaign(String[] aData)
{
   var redirectUrl = new UrlHelper(Request.RequestContext).Action("TestView","Test");
   return Json(new {Url : redirectUrl });
}

出于上述目的,TestView 是我要加载的视图的名称,而 Test 是控制器。

我在这里做错了什么..我试图理解 MVC,但我还不明白......灯还没有点击。

4

1 回答 1

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()来生成您的 URL。http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.action(v=vs.108).aspx

于 2013-10-02T22:31:05.503 回答