【问题标题】:Change asp:label with jQuery then access in codebehind使用 jQuery 更改 asp:label 然后在代码隐藏中访问
【发布时间】:2012-02-23 18:15:19
【问题描述】:

我知道,没错。

所以我有一个 asp 标签,我想用 jQuery 填充它。稍后,在代码隐藏中,我想访问此文本以获取其他内容。

我拥有的是:

<asp:Label ID="myLabel" runat="server" />
<asp:Button ID="clickMe" runat="server" Text="Click!" OnClientClick="runMe();" 
   OnClick="clickMe_Click()" />

<script language="javascript" type="text/javascript">

   function runMe () {
      $("#<%=myLabel.ClientID").text("here");}
</script>

protected void clickMe_Click(object sender, EventArgs e)
{
   string isIt = myLabel.Text;
}

因此,如果我在“isIt”定义后的任何代码上放置断点并查看它,isIt=""。有没有办法使这项工作?我猜想,因为 jQuery 作用于 html,它实际上是在改变不是实际的 ASP.NET 标签。

【问题讨论】:

    标签: jquery asp.net label code-behind


    【解决方案1】:

    浏览器中的asp:Label 元素呈现为span 元素。因此,设置该值将不起作用。如果使用 Jquery/javascript,我们应该设置 asp:labelspan 元素的内部文本或内部 Html。如下:

    $("#<%= myLabel.ClientID %>").text("MY UPDATED TEXT");
    $("#<%= myLabel.ClientID %>").html("MY UPDATED HTML");
    

    【讨论】:

      【解决方案2】:

      试试

      $('#<%= myLabel.ClientID %>').html("here"); 
      (This should work in all the browsers)
      

      当我想将值传递给页面后面的代码时,我通常使用 HiddenField 并在 Jquery 中使用 .val() 填充它。然后我可以使用 HiddenField1.Value 在后面的代码中访问它的值

      【讨论】:

      • 特别是您关于 HiddenFields 的观点(标签不起作用)。谢谢!
      • 是的,您使用 Jquery 分配给标签的值在后面的代码中将不可用,因此您需要使用隐藏字段。 :)
      【解决方案3】:

      尝试.val() 而不是.text()

      编辑: 由于 ASP.NET 控件是使用前缀呈现的,因此您可能还需要考虑 ends with 选择器。

      $('span[id$="myLabel"]').val("here");
      

      【讨论】:

      • 我完全错过了最明显的问题。您正在尝试获取Label 控件的值,而不是TextBoxLabels 呈现为 spans 并且不会回发到服务器。我不记得 Labels 是否具有 AutoPostBack 属性,如果他们确实设置了它,否则您需要将其设为 TextBox 或隐藏字段。
      • 是的,你一针见血。我使用了 Somya 的 HiddenField 方法,但我想隐藏的文本框也可以解决问题。
      猜你喜欢
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      相关资源
      最近更新 更多