1

これが私の見解からのjqueryです:

 $("#btnSelect1").click(function () {
        var donationTypeID = $(this).closest('p').find('#selectList').val();
        var id = parseInt(donationTypeID);
        var id2 = $('#person').val();
        var persId = parseInt(id2);

        // var personName 
        var route = '/Donation/ContinueDonation/' + id + '?personId =' + persId;

        $("#donationSection1").load(route, function () {...});...

これがコントローラーの方法です

 public ActionResult ContinueDonation(int id, int personId)
    {}

これを機能させる方法について何か考えはありますか?ありがとう

4

2 に答える 2

1

id値にキーを指定しませんでした:

var route = '/Donation/ContinueDonation/?id=' + id + '&personId =' + persId;

ところで、HTTPで送信されるすべてのパラメーターは文字列であるため、行var persId = parseInt(id2);は冗長です。したがって、まったく同じです。"234"234

于 2012-05-05T22:01:11.363 に答える
1

私は実際、前の答えはそれほど正しくないと思います。この{controller}/{action} / {id}のようなURLに一致するMVCによって確立されたデフォルトルートにヒットした場合、クエリ文字列は正しいです。

本当に起こっているに違いないのは、ルートを台無しにしていて、クエリがデフォルトルートにヒットしていないか、それを変更したことです。

私がすることは、RouteDebuggerを取得し(nugetを介して取得するだけです)、クエリ文字列がヒットするルートを確認することです。任意のURL(フレンドリURLのポイント全体の一種)のルートを設定できるため、ルートを/ ContinueGiving / {id} / {personId}にする場合は、ルートを追加することでそれを行うことができます。次のような定義で追加されるルートの先頭に:


routes.MapRoute(
    name: "ContinueDonation",
    url: "ContinueGiving/{id}/{personId}",
    defaults: new { controller = "Donation", action = "ContinueDonation" },
    constraints: new { id = @"\d+", personId = @"\d+" }
);

フレームワークが投稿された値、クエリ文字列などのいずれかで一致するアイテムを見つけることができる場合、指定しないパラメータはマップされます。

制約により、渡されるパラメーターが数値の場合にのみ、このルートが一致するようになります。

どういうわけかidのルートが一致しなかったため、前の回答は機能しましたが、それは実際にはあなたの問題ではありません。

于 2012-05-06T02:54:03.160 に答える