发生带有 Jquery 对话框的邮箱时,asp.net 文本框值为空

Posted

技术标签:

【中文标题】发生带有 Jquery 对话框的邮箱时,asp.net 文本框值为空【英文标题】:asp.net Textbox value is null when post bock with Jquery Dialog occured 【发布时间】:2013-09-02 21:05:48 【问题描述】:

我在

标记中有 Asp.net 文本框,单击“btnReply”后, 由 Jquery 对话框显示,因此用户在文本框中写下想法并单击“发送”按钮(jquery 对话框按钮)和回发发生了。

但服务器端的 asp.net 文本框值为 null 。为什么 ? 我的代码在这里:

     <div id="ReplyDiv"  style="display:none;">
             <asp:TextBox ID="txtReply" runat="server" Textmode="MultiLine"/>
     </div>

     <input type="button" id="btnReply" onclick="javascript:retuen ShowReplyDialog();"/>

      <asp:Button ID="AspBtnReply" runat="server" OnClick="AspBtnReply_Click" class="hidden"/>

     /*-----Jquery script----*/
    <script type="text/javascript">
      function ShowReplyDialog()
       
         $("#ReplyDiv").dialog(
            width: 580,          
            buttons: 
               "Close": function ()  $(this).dialog("close"); , 
               "Send" : function () 
                   //----Call Asp.net server method here
                   $("#<%=AspBtnReply.ClientID %>").click();
                                   
            
         ).parent().appendTo($("form:first"));
      
    </script>

【问题讨论】:

【参考方案1】:

经过大量搜索,我明白有一些原因:

    我可以解决它**Jquery UI Dialog 需要 z-index 样式**。我的意思是:

    <style>
     .ui-widget-overlay
     
         z-index:0;
     
    </style>
    

    并且需要jquery:

      $("#..").dialog(.....).parent().parent().appendTo($("form:first"));
    

    我使用 UpdatePanel 已经有一段时间了,但我相信在部分回发时,它们只会发送更新后的控件值。因此,在 UpdatePanel 中移动 TextBox,或者使用 Javascript 在 UpdatePanel 中填充隐藏控件,并在更新时使用 TextBox 的上下文。item

    要在后面的代码中获取输入的值并通过服务器控件机制 (textBox.Text) 访问它们,它们的状态(和存在)需要保存在 ViewState 中。由于您是使用 javascript 构建它们,因此它们的状态不会持久化,获取它们的值的唯一方法是使用 Request.Form 集合。

    这个问题说最好的提示:jQuery Dialog-Postback but UpdatePanel doesn't get updated**

    禁用控件是最好的问题: Retrieving the value of a asp:TextBox

【讨论】:

【参考方案2】:

使用隐藏字段值存储文本框值

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

hid是隐藏字段的id。

【讨论】:

嗨 Aarif,我可以解决它,但我想知道为什么文本框的值没有发送到服务器。!!!我也提出了你的解决方案,但完全不是你说的我的回答。谢谢 运行时的 Jquery UI 会删除所有文档对象并将其放在 DOM 之外,此时您将无法访问任何对象。这是所有 Jquery UI 插件的默认行为。所以你必须通过改变你使用它的方式来忍受它。【参考方案3】:

我刚刚遇到了同样的问题,经过两个小时的努力,我在我的引导模式中找到了表单标签。我已经删除了表单标签,并且值正在后端接收。

【讨论】:

以上是关于发生带有 Jquery 对话框的邮箱时,asp.net 文本框值为空的主要内容,如果未能解决你的问题,请参考以下文章

打开带有动态内容的 jQuery UI 对话框

jQuery:日期选择器开始在对话框中打开,仅在 IE 中

jQuery UI - 在外部单击时关闭对话框

带有 ASP.NET 回发的 jQuery 模态对话框

带有常规 Div 的 JQuery UI 对话框堆叠顺序

带有 ASP.NET 按钮回发的 jQuery UI 对话框