使用 MVC 从 ASP 加载新视图



好的,所以情况是我在我的索引页面上。我有一个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 发送了请求...但我没有看到数据通过(其空),当我返回响应字符串时,页面没有加载。

我的控制器类中的方法如下所示:

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

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

我在这里做错了什么..我试图理解 MVC,但我只是还不明白......指示灯没有亮起。

这里的问题是你没有命名参数。如果像你说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

最新更新