当使用Jquery对话框发生POST请求时,asp.net的Textbox值为空
当使用Jquery对话框发生POST请求时,asp.net的Textbox值为空
我在
/*-----Jquery script----*/
function ShowReplyDialog()
{
$("#ReplyDiv").dialog({
width: 580,
buttons: {
"Close": function () { $(this).dialog("close");},
"Send" : function () {
//----在这里调用Asp.net服务器方法
$("#<%=AspBtnReply.ClientID %>").click();
}
}
}).parent().appendTo($("form:first"));
}
问题的原因是在使用Jquery Dialog时,当提交表单时,ASP.NET的TextBox的值为null。解决方法如下:
1. 首先,需要在样式中设置z-index属性,以确保Jquery UI Dialog的层级正确。可以添加以下代码到样式中:
并且需要在Jquery中添加以下代码:
$("#..").dialog(.....).parent().parent().appendTo($("form:first"));
2. UpdatePanels在部分异步回发时只会发送更新的控件的值。因此,将TextBox放在UpdatePanel内部,或者使用JavaScript将TextBox的内容填充到UpdatePanel内部的隐藏控件中。
3. 如果想要在后端代码中通过服务器控件机制(textBox.Text)获取输入框的值,它们的状态(和存在)需要在ViewState中保持。由于你是使用JavaScript创建它们的,它们的状态不会被保持,你唯一能获取它们的值的方式是使用Request.Form集合。
4. 可以参考以下链接中提供的最佳实践:
jQuery Dialog-Postback but UpdatePanel doesn't get updated
5. 如果需要禁用控件,可以参考以下链接: