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");
   });
};

役立つヒントをもう 1 つ。を使用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 に答える