【问题标题】:How to get textbox value on serverside aspx如何在服务器端aspx上获取文本框值
【发布时间】:2015-08-26 05:10:50
【问题描述】:

我有一个带有引导模式的更新面板和一个文本框

默认.aspx:

 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
   <ContentTemplate>
     <div class="modal fade" id="myModal" data-backdrop="true">
       <div class="modal-dialog">
         <div class="modal-content">
           <div class="modal-header">
             <h4>Subscribete</h4>
           </div>
           <div class="modal-body">
             <div class="subscription-form-container row-fluid">
               <asp:TextBox ID="UserMail" runat="server" CssClass="form-control" ClientIDMode="Static"></asp:TextBox>
               <div class="success-message"></div>
               <div class="error-message"></div>
               <div class="resultado">
                 <asp:Label ID="ltl_resultado" runat="server" Text=""></asp:Label>
               </div>
             </div>
           </div>
           <div class="modal-footer">
             <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>                            
             <a href="#" class="btn btn-primary" runat="server" id="anchorbutton">Aceptar</a>
           </div>
         </div>
       </div>
     </div>
   </ContentTemplate>
 </asp:UpdatePanel>

默认.aspx.vb:

Protected Sub Anchor_Click() Handles anchorbutton.ServerClick
    UpdatePanel1.Update()
    Dim Msg As String
    Msg = "Mensaje enviado desde el formulario Contactar: " & Me.UserMail.Text
End Sub

这是一个屏幕截图,显示了我们在调试器中的内容:

我试过了:

  • 发送 $('#UserMail').val() 使用 .ajax() 在标记和 &lt;WebMethod&gt; 在代码隐藏中没有结果

  • 将标记中的AutoEventWireup="false" 和代码隐藏中的AddHandler 更改为anchorbutton.ServerClick

  • anchorbuttonUpdatePanel 中取出并添加

    <Triggers>
      <asp:AsyncPostBackTrigger ControlID="anchorbutton" />
    </Triggers>
    
  • 很多

感谢您的帮助!

【问题讨论】:

  • 获取asp.net控制值语法应该是$("#&lt;%=UserMail.ClientID%&gt;")
  • 我使用ClientIDMode="Static",所以我可以使用$('#UserMail').val()

标签: jquery asp.net vb.net twitter-bootstrap


【解决方案1】:

您正在使用 UpdatePanel.Update 方法 导致 UpdatePanel 控件的内容更新。我认为这是清除您的文本框。试试下面的代码

 Protected Sub Anchor_Click() Handles anchorbutton.ServerClick

        Dim Msg As String
        Msg = "Mensaje enviado desde el formulario Contactar: " & Me.UserMail.Text
        UpdatePanel1.Update()   
 End Sub

【讨论】:

  • 我之前试过,不工作我看不出运行时有什么不同
【解决方案2】:

使用 ajax 你可以像下面这样:

$("#<%=anchorbutton.ClientID%>").click(function(e) {
    e.preventDefault();
    var txtVal = $("#UserMail").val();
    console.log(txtVal);
    $.ajax({
        type: "POST",
        url: "Default.aspx/MyFunction",
        data: "{'textVal':'" + txtVal + "'}",
        contentType: "application/json; charset=utf-8",
        success: function (result) {
            alert("success");
        }
    });
});


[WebMethod]
public static void MyFunction(string textVal)
{

}

如果您想使用服务器端在锚标记中添加 onserverclick 属性:

<a href="#" class="btn btn-primary" runat="server" id="anchorbutton" OnServerClick="Anchor_Click">Aceptar</a>

vb代码

Protected Sub Anchor_Click(sender As Object, e As EventArgs)
    UpdatePanel1.Update()
    Dim Msg As String = Nothing
    Msg = "Mensaje enviado desde el formulario Contactar: " & Convert.ToString(Me.UserMail.Text)
End Sub

【讨论】:

    【解决方案3】:

    问题在于单独的 asp:Content 中的代码,与 MasterPages 相关

    【讨论】:

    • 在尝试将 EntityDataSource 分配给 DropDownList 时发现,它们必须存在于同一个 asp:Content 块中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多