当使用Jquery对话框发生POST请求时,asp.net的Textbox值为空

9 浏览
0 Comments

当使用Jquery对话框发生POST请求时,asp.net的Textbox值为空

我在

标签中有一个Asp.net文本框,点击"btnReply"后,通过Jquery对话框显示

,用户在文本框中编写想法,然后点击"Send"按钮(jquery对话框按钮)进行提交。但是在服务器端,Asp.net文本框的值为空。为什么呢?我的代码如下:

/*-----Jquery script----*/

0
0 Comments

问题的原因是在使用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. 如果需要禁用控件,可以参考以下链接:

Retrieving the value of a asp:TextBox

0
0 Comments

问题的原因是在使用Jquery Dialog的过程中,Jquery UI会将所有的文档对象移出DOM,导致无法访问这些对象。解决方法是使用隐藏字段来存储文本框的值。具体做法是将文本框的值赋给隐藏字段,然后将隐藏字段的值传递给服务器。

代码如下:

var Des = $("#txtDesc").val();
$("#hid").val(Des);

其中hid是隐藏字段的id。

这样就可以解决文本框值为空的问题了。

0
0 Comments

最近我遇到了同样的问题,在努力了两个小时后,我发现了我的bootstrap Modal中有一个form标签。我移除了form标签,然后后端可以接收到值了。

0