4

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

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

lblDoc.Text 是标签。

<asp:Label ID="lblDoc" runat="server" Text="Label" Visible="false"></asp: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);%>
                },
          });
4

3 回答 3

2

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

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

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

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

作为备选:

  1. 不断更改span代表Label

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

于 2012-07-30T02:22:14.750 回答
0

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

$("#lblDoc").text(selectedPath);
于 2012-07-30T01:36:50.763 回答
0

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

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

                },
            });

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

$("#stackOverflow").append(....)
于 2012-07-31T07:29:48.073 回答