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

时间:2012-07-30 01:28:25

标签: javascript jquery asp.net

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

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

lblDoc.Text是Label。

<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);%>
                },
          });

3 个答案:

答案 0 :(得分:2)

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

  • 当您在页面上执行HTML帖子时,只有表单输入字段被发送到服务器,Label控件呈现为Label因此跨度的内容不会作为数据发送到服务器

  • 即使<span id="<ClientID>">内容标记已发送到服务器,其值也会被 ViewState <中存储的span值覆盖/强>

由于上述原因,您的代码将无法按照您的方式运行,并且(据我所知)Label字段无法使用JavaScript解密

作为替代方案:

  1. 继续更改代表ViewState

  2. span标记的文字
  3. 添加隐藏字段,当您更改JavaScript中的Label文本时,在此隐藏字段中复制相同的值,最后,在您的服务器代码中使用此值更改{{1}属性

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

                },
            });

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

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