簡體   English   中英

JavaScript(asp.net)的神秘回發問題

[英]Mysterious postback issues with javascript (asp.net)

我顯示了一個使用javascript的modalpopupextender,當我單擊其“保存”按鈕時,它將保存我輸入的內容,並(作為其按鈕)自動回發,以便頁面刷新。

但是,當刷新時,出現錯誤,因為它說我在aspx頁面上定義的復選框控件為空。

頁面加載時,我要做的第一件事是創建一些JavaScript,並為我的組件輸入各種clientID,最后要添加的是chkFullyBooked.ClientID。

頁面首次加載時可以,但是在發回頁面后,我的復選框為空。

另一個問題是,在我的“保存”按鈕功能中,雖然它可以獲取代碼中文本框和復選框的值,但它無法從已更改的標簽中獲取文本……我通過將標簽轉換為文本框來解決了這個問題。

我只是無法弄清楚復選框控件(與其他文本框一起硬編碼到我的頁面中)在頁面刷新時返回為null的原因。

我的aspx頁面頂部的代碼:

<% Response.Write("<script language='javascript' type='text/javascript'>" +

    "function DisplayModalPopup(dateCreated, note, editedBy, fullybooked) {" +

        "var modalDialog = $find('AddressErrorPopup');" +

        "document.getElementById('" + txtNote.ClientID + "').value = note;" +

        "if (modalDialog != null) { modalDialog.show(); }" +

        "var lblLastEditBy = document.getElementById('" + txtLastEditBy.ClientID + "');" +
        "lblLastEditBy.value = editedBy;" +

        "var lblDateCreated = document.getElementById('" + txtTallyBoardEntryDate.ClientID + "');" +
        "lblDateCreated.value = dateCreated;" +

        "var fullyBooked = document.getElementById('" + chkFullyBooked.ClientID + "');" +
        "fullyBooked.value = fullybooked;" +


    "} " + 
"</script>"); %>

稍后在我的代碼中,摘錄:

.
.
.
    <tr>
    <td colspan="2" style="text-align:left">Last Edit by - <asp:TextBox ID="txtLastEditBy" ReadOnly="true" runat="server"></asp:TextBox></td>
    </tr>
    <tr><td colspan="2" style="text-align:left"><asp:CheckBox runat="server" ID="chkFullyBooked" Text="Fully Booked?" Checked="false"/></td></tr>
.
.
.

編輯:這當然意味着我在上面的代碼中獲得了空引用異常,因為它無法訪問ClientID。

編輯:作為cr腳的修復程序,我做了response.redirect(request.url.tostring)而不是讓按鈕回發本身,並且出於某些不可思議的原因,此方法工作正常。

由於您在運行時通過Javascript對文本/復選框的值進行了“硬編碼”,因此ViewState不了解這些值的設置,因此刷新或回發后它們將保持空白。

您會注意到Response.Redirect確實保留了您的值,因為在調用基於服務器的方法時,它會遍歷所有表單字段並收集其值以存儲在ViewState中,並在從服務器請求返回時重新填充它們。

您是否曾嘗試在用戶首次訪問頁面時通過Page_Load函數加載初始值? 這將確保在基於模式彈出操作執行操作時,將值存儲在ViewState中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM