首页 > 解决方案 > Javascript 未更新 @Html.TextBox

问题描述

我有一个带有 JavaScript 函数的 Asp.Net Razor 网页,它没有按预期更新我的 @Html.TextBox 控件之一。这是JavaScript:

    function UpdateDept() {
        debugger;
        var result = '';
        var badge = document.getElementById("PIP_BADGE").value;
        var url = "http://internalSite/api/personinfo/" + badge;
        alert('Using badge #' + badge)
        $.ajax({
            url: url,
            type: 'POST',
            data: { 'badge': badge },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {
                alert(JSON.stringify('result = ' + result));
                $('#PIP_DEPT').val(JSON.stringify(result));
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.responseText);
            }
        })

两个警报都给了我正确的值。这是我要更新的目标@Html.TextBox 的代码:

                <td style="width: 40%">
                    <div class="form-group">
                        <label for="PIP_DEPT">Department:</label>
                        <a class="anchor" id="PIP_DEPT_ANCH"></a>
                        @Html.TextBox("PIP_DEPT", @dept, new { @class = "form-control", id = "PIP_DEPT", @readonly = true, style = "width: 400px" })
                    </div>
                </td>

@dept 的初始值在页面初始加载时被分配一个值,并且它正确显示。“PIP_DEPT”文本框没有更新,我做错了什么?

添加到解决@Mamum 的答案:此代码有效,并且它还从@Html.DropDownList 中的选定值更新只读字段。JavaScript:

    function UpdateBadge() {
        var e = document.getElementById("PIP_USER_NAME");
        var temp = e.options[e.selectedIndex].value;
        $('#PIP_BADGE').val(temp);
    }

文本框代码:

@Html.TextBox("PIP_BADGE", @badge, new { @class = "form-control", id = "PIP_BADGE", @readonly = true, style = "width: 100px" })

标签: javascriptrazorhtml.textboxfor

解决方案


我的 JavaScript/Api 调用技巧还有很多不足之处,因此考虑到这一点,结果证明调用“失败”,但我需要的正确数据在 xhr.responseText 中返回。我可以使用。我知道,我知道,这是一个可怕的 hack,但我已经在这上面浪费了太多时间。

感谢所有插话的人。


推荐阅读