asp.net Textbox value is null when post bock with

2020-03-25 22:58发布

问题:

I have Asp.net text box in < div> tag which after click on "btnReply",< div> showes by Jquery Dialog, so user write idea at text box and click "Send" button (jquery dialog button) and post back happend.

but the asp.net text box value at server side is null . Why ? my code is here :

     <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:

After a lot of search i understand to have some reasons :

  1. I can solved it **Jquery UI Dialog need z-index style ** . i mean :

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

    And need jquery :

      $("#..").dialog(.....).parent().parent().appendTo($("form:first"));
    
  2. It's been a while since I used UpdatePanels, but I believe that on partial postback they only send updated values for controls inside them. So move the TextBox inside the UpdatePanel, or perhaps use Javascript to populate a hidden control inside the UpdatePanel with the contexts of the TextBox whenever it is updated.item

  3. To get the values of the inputs in the code behind and access them through the server controls mechanism (textBox.Text), their state (and presence) needs to be persisted in the ViewState. Since you are building them with javascript, their state is not persisted, the only way you can get their values is using the Request.Form collection.

  4. This issue said best tips : jQuery Dialog-Postback but UpdatePanel doesn't get updated**

  5. For disable controls is best issue : Retrieving the value of a asp:TextBox



回答2:

Use hidden field value to store the textbox value

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

hid is the id of hidden field.