【发布时间】:2009-10-19 15:42:49
【问题描述】:
我使用 javascript 显示了一个 modalpopupextender,当我点击它的保存按钮时,它会保存我输入的内容,并(作为它的一个按钮)自动回发,以便页面刷新。
但是当它刷新时,我收到一个错误,因为它说我在我的 aspx 页面上定义的复选框控件为空。
页面加载时我做的第一件事是创建一些 javascript 并为我的组件提供各种 clientID,最后要添加的是 chkFullyBooked.ClientID。
当页面第一次加载时,它是好的,但是在回发后它说我的复选框是空的。
另一个问题是,在我的保存按钮功能中,虽然它可以检索文本框的值和代码中的复选框,但它无法从已更改的标签中获取文本...我通过将标签转换为文本框来解决这个问题不过。
我只是无法弄清楚为什么复选框控件(与其他文本框一起硬编码到我的页面中)会在页面刷新时返回为空。
我的 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。
编辑:作为一个蹩脚的修复,我做了 response.redirect(request.url.tostring) 而不是让按钮回发本身,这出于某种天谴的原因工作正常..
【问题讨论】:
标签: asp.net javascript