mvc3 partialview不加载查询字符串

时间:2012-09-12 09:35:21

标签: asp.net-mvc-3 query-string

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

这是控制器

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

string verzijaIme在查询字符串中但是当加载了partialview时它告诉我这是未定义的

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

如果我只放置一个参数(string或int)并且如果我放置两个参数verzijaIme未定义,我不明白为什么一切正常?

如果我从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);
            }
        });
    }

1 个答案:

答案 0 :(得分: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调用的查询字符串的页面混淆。这是两个单独的请求。