【问题标题】:Can not pass ViewBag property to jQuery method无法将 ViewBag 属性传递给 jQuery 方法
【发布时间】:2023-04-03 21:28:01
【问题描述】:

我在尝试获取 ViewBage 属性值并将其传递给 jQuery 方法时遇到问题。 例如,在我下面的代码中,@ViewBag.CountResult 的值为 1,它显示在我的浏览器中,但是当传递给 updateResultFooter 方法时,它就像 "" !不明白为什么。下来是我的看法。有什么帮助吗?

提前致谢

<div>
    <div>
        <span>Téléphone ?</span>
        <input id="idTxTel" type="text" name="txTelephone"/>

        <input id="idBnSearch" type="submit" value="Chercher" name="bnSearch"/>
    </div>
    @Html.Partial("_Result", Model)
</div>

<script type="text/javascript">
    var methodUrl = '@Url.Content("~/Search/GetReverseResult/")';

    $(document).ready(function (){
        updateResultFooter("@ViewBag.CountResult", "@ViewBag.PageNumber", "@ViewBag.PageCount");

        $("#idBnSearch").click(function (){           
            var telValue = $("#idTxTel").val();

            pageIndex = 0;
            doReverseSearch(telValue, pageIndex, methodUrl);
            updateResultFooter("@ViewBag.CountResult", 0, "@ViewBag.PageCount");
        });

        $("#bnNextPage").live("click", function (){
            var telValue = $("#idTxTel").val();

            pageIndex = pageIndex + 1;
            doReverseSearch(telValue, pageIndex, methodUrl);
            updateResultFooter("@ViewBag.CountResult", pageIndex, "@ViewBag.PageCount");
        });
    });

    function updateResultFooter(resultCount, pageIndex, pageCount){
        if (resultCount == '0')
            $("#resultFooter").hide();
        else 
        {
            $("#resultFooter").show();

            if (pageIndex == 0)
                $("bnPreviousPage").attr('disabled', 'disabled');
            else
                $("bnPreviousPage").removeAttr('disabled');

            if ((pageIndex + 1) == pageCount)
                $("bnNextPage").attr('disabled', 'disabled');
            else
                $("bnNextPage").removeAttr('disabled');
        }
    }

    function doReverseSearch(telValue, pageIdx, methodUrl){
    $.ajax({
            url: methodUrl,
            type: 'post',
            data: JSON.stringify({ Telephone: telValue, pageIndex: pageIdx }),
            datatype: 'json',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                $('#result').replaceWith(data);
            },
            error: function (request, status, err) {
                alert(status);
                alert(err);
            }
        });
    }
</script>

PS:我正在使用此代码来修改网页的显示,具体取决于用户搜索的结果。

【问题讨论】:

  • @ViewBag.CountResult 有问题吗?您是否使用此代码获取 @ViewBag.PageCount 的值?
  • 在浏览器中查看源码时,updateResultFooter的第一个参数是“1”还是“”?
  • 第一个参数是一个空字符串“”,这是我想通过jQuery从ViewBag中获取的所有变量
  • 我试图改变我的模型,所以它可以有我想要的值,比如 CountResult。所以,我不再使用 ViewBag 了。但这并没有解决我的问题。首先,我在第一次加载页面时遇到 NullReferenceException (updateResultFooter("@Model.CountResult", ...),我尝试使用 (var jsModel = '@Html.Raw(Json .Encode(Model))';) 但是 jsModel 总是 'null' !为什么会这样?

标签: c# jquery .net asp.net-mvc-3


【解决方案1】:

我改变了我使用的方法。现在,我更改了模型,使其包含我想要显示的数据,例如 (CountResult, PageCount)。现在可以正常使用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2017-06-21
    相关资源
    最近更新 更多