虽然我更改了标签的文本,但它仍然返回初始值,我该如何解决

Although I change the text of label it still returns initial value, how can I solve?

本文关键字:解决 何解决 标签 文本 返回      更新时间:2024-05-07

尽管我将文本分配给标签(lblDoc),但对于

<%FillRpt(rpt, lblDoc.Text , UserId);%>

lblDoc.文本为标签。

<asp:Label ID="lblDoc" runat="server" Text="Label" Visible="false"></asp:Label>

我更改了Text值,但它仍然返回"Label"。我该怎么改?

情况如下:

 $.ajax({
                type: "POST",
                url: "FileManager.aspx/foo",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    $("#<%=lblDoc.ClientID%>").text(selectedPath);
                    <%FillRpt(rpt, lblDoc.Text , UserId);%>
                },
          });

是的,您正在更新客户端浏览器上Label控件的客户端表示,但该值不会在服务器代码上读取,原因有两个:

  • 当您在页面上发布HTML时,只有表单输入字段被发送到服务器,Label控件呈现为<span id="<ClientID>">,因此跨度的内容不会作为数据发送到服务器

  • 即使span内容标记被发送到服务器,其值也会被存储在ViewState中的Label值覆盖

由于上述原因,您的代码无法按照您尝试的方式工作,而且(据我所知)ViewState字段无法使用JavaScript 解密

作为替代方案:

  1. 不断更改代表Labelspan标签的文本

  2. 添加一个隐藏字段,当您在JavaScript中更改Label文本时,在该隐藏字段中复制相同的值,最后,在您的服务器代码中使用该值来更改Label.Text属性

为什么需要<%标签?你应该能够做到:

$("#lblDoc").text(selectedPath);

我通过使用返回JSON数据的Web方法来解决问题。
在之后

  $.ajax({
                type: "POST",
                url: 
                data: 
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                   //.........
                    });
                },
                error: function(msg) {
                },
            });

在成功的部分,我做我想做的事。例如,我将一些数据附加到任何标签上,例如

$("#stackOverflow").append(....)