0

我有使用 AJAX 更新的部分视图。问题是部分视图需要两个参数,一个不在查询字符串中。

这是控制器

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

string verzijaIme 在查询字符串中,但是当加载部分视图时,它告诉我未定义

int bojeId 不在查询字符串中,但是当用户单击按钮时,它由 AJAX 发送。

我不明白为什么如果我只输入一个参数(字符串或 int)并且如果我输入两个参数 verzijaIme 未定义,为什么一切正常?

如果我从 int bojeId 中删除 =0 并将该参数放入查询字符串中,它也可以工作,但我不能接受这种解决方案

有什么建议吗?

阿贾克斯代码

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 调用的查询字符串混淆。这是两个单独的请求。

于 2012-09-12T11:57:08.890 回答