使用MVC从asp加载新视图

时间:2013-10-02 22:17:59

标签: c# jquery asp.net-mvc controller views

好的情况是我在索引页面上。我有一个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,但我还没有得到它......光还没有点击。

1 个答案:

答案 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