【问题标题】:ASP.Net label value changed in JQuery but unchanged at postbackASP.Net 标签值在 JQuery 中更改但在回发时未更改
【发布时间】:2013-06-26 10:39:33
【问题描述】:

ASP.Net 标签的原始值为“xyz”。

我已将 ASP.Net 标签值更改如下:

$("#<%= lblNew.ClientID %>").text("123");

它在网页上发生了变化。但是当我点击按钮并获取标签的值时,它会变回之前的值“xyz”而不是“123”。

Response.Write(lblNew.Text);

我尝试设置标签的html而不是文本如下:但它也不起作用。

$("#<%= lblNew.ClientID %>").html("123");

如何获取 Jquery 更改的值?谢谢。

【问题讨论】:

标签: jquery asp.net label


【解决方案1】:

这是因为标签文本值是从视图状态加载的。您的 jquery 更改了标签的值,但没有更改在回发时加载它的值的视图状态.... 但是你想要更改标签文本..所以你可以像这样得到它.......

string lblvalue=Request[lblNew.UniqueID] as string;

这里是一个例子来了解视图状态如何与标签一起工作......参考MSDN

<asp:Label runat="server" ID="lblMessage" 
  Font-Name="Verdana" Text="Hello, World!"></asp:Label>
<br />
<asp:Button runat="server" 
  Text="Change Message" ID="btnSubmit"></asp:Button>
<br />
<asp:Button runat="server" Text="Empty Postback"></asp:Button>
And the code-behind class contains the following event handler for the Button's Click event:
private void btnSubmit_Click(object sender, EventArgs e)
{
  lblMessage.Text = "Goodbye, Everyone!";
}

说明了发生的事件序列,强调了为什么需要将 Label 的 Text 属性的更改存储在视图状态中。

【讨论】:

    【解决方案2】:

    解决您面临的问题是使用隐藏字段并将其值与标签字段一起更新,当回发发生时您可以从隐藏字段中读取更新的值

    【讨论】:

      【解决方案3】:

      改用.val()

      $("#<%= lblNew.ClientID %>").val("123");
      

      文档可以在这里找到:http://api.jquery.com/val/#val-value

      编辑:

      我误读了您的问题,.text 应该没问题。我认为这个问题更多地与回发有关。您能否确认代码$("#&lt;%= lblNew.ClientID %&gt;").text("123"); 是如何调用的?如果它在$(document).ready() 上,那应该没问题。但这是在进行回发/重新加载 DOM 时会丢失的操作的结果。

      【讨论】:

        【解决方案4】:

        您不能在 Javascript/JQuery 中更改 ASP.Net 标签并期望它们在回发时持续存在。

        只有来自输入控件(如文本框、单选控件、单选按钮等)的值才会发布到服务器。

        【讨论】:

          猜你喜欢
          • 2010-10-10
          • 1970-01-01
          • 2011-11-14
          • 2012-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多