0

AJAX で更新された部分ビューがあります。問題は、部分ビューが 2 つのパラメーターを受け取る必要があり、そのうちの 1 つがクエリ文字列に含まれていないことです。

これはコントローラーです

public ActionResult _Unutrasnjost(string verzijaIme,int bojeId=0)
{
    return PartialView(repositoryU.BojeUnutrasnjostVezano.Where(v =>v.VerzijaIme==verzijaIme&&v.BojeId == bojeId).ToList());
}

文字列 verzijaIme はクエリ文字列にありますが、部分ビューが読み込まれると、未定義であることがわかります

int bojeId はクエリ文字列ではありませんが、ユーザーがボタンをクリックすると、AJAX によって送信されます。

パラメータ (string または int) を 1 つだけ入れて、verzijaIme を 2 つ入れた場合にすべてが機能する理由がわかりません。

int bojeId から =0 を削除し、そのパラメーターをクエリ文字列に入れても機能しますが、そのような解決策を受け入れることはできません

なにか提案を?

Ajax コード

function unutrasnjostData(id) {
        var urlclear = '@Url.Action("_Unutrasnjost", "Configurator")' + "?bojeId=" + id;
        $.ajax({
            cache: false,
            type: 'POST',
            url: urlclear,
            success: function (data) {
                $('#meniDesnoIzmjeneUnutrasnjost').html(data);
            }
        });
    }
4

1 に答える 1

1

verzijaIme部分的なビューにまったく渡っていないようです。unutrasnjostData関数を拡張する必要があります。

function unutrasnjostData(id, verzijaIme) {
        var urlclear = '@Url.Action("_Unutrasnjost", "Configurator")' + "?bojeId=" + id + "&verzijaIme=" + verzijaIme;
        $.ajax({
            cache: false,
            type: 'POST',
            url: urlclear,
            success: function (data) {
                $('#meniDesnoIzmjeneUnutrasnjost').html(data);
            }
        });
    }

または、さらに良いのは、郵送で送信することです。

    $.ajax({
        cache: false,
        data: { bojeId: id, verzijaIme: verzijaIme },
        type: 'POST',
        url: urlclear,
        success: function (data) {
            $('#meniDesnoIzmjeneUnutrasnjost').html(data);
        }
    });

ページへの要求からのクエリ文字列と、AJAX 呼び出しからのクエリ文字列を混同しないでください。これらは 2 つの別個の要求です。

于 2012-09-12T11:57:08.890 に答える