0

我有这样的代码

 <table>
                <tr>
                    <td>
                        <div>
                            <asp:Label runat="server" ID="lblBookmarksIds" Style="visibility: hidden;" Text="test"/>
                        </div>
                    </td>
                    <td>
                        <asp:UpdatePanel runat="server" ID="buttonPanel" UpdateMode="Conditional">
                            <ContentTemplate>
                                <asp:Button runat="server" ID="btnInvokeImageRead" CausesValidation="false" UseSubmitBehavior="false"
                                    OnClick="btnInvokeImageRead_Click" Style="visibility: hidden;" />
                            </ContentTemplate>
                        </asp:UpdatePanel>
                    </td>
                </tr>
            </table>

在javascript中,我试图设置标签的值并调用代码隐藏函数,以便我将所需的值传递给代码隐藏,如下所示:

alert(document.getElementById('<%= lblBookmarksIds.ClientID%>').firstChild.nodeValue);
            document.getElementById('<%= lblBookmarksIds.ClientID%>').innerText = str;
            alert(document.getElementById('<%= lblBookmarksIds.ClientID%>').firstChild.nodeValue);
            //alert('1');
            if (str != "") {
                document.getElementById('<%= btnInvokeImageRead.ClientID%>').click();
            }

当显示第二个警报时,lblBookmarksIds 的值已更改,但是当我在代码隐藏函数 btnInvokeImageRead_Click 中调试时,lblBookmarksIds 的值具有其旧值。

有谁知道为什么?

问候沃伊切赫

4

2 回答 2

0

ASP.NET 能够“看到”输入到 aTextBox和类似控件中的值的原因是因为这些控件的值POST在页面回发时在正文中发送。您可以通过任意数量的工具看到这一点,包括您的浏览器可能包含的开发工具或 Fiddler 之类的拦截代理。当回发发生时,这些控件中的每一个都有一个LoadPostData处理POST数据和更新控件Text属性(或任何属性)的函数。

a 的内容Label未在POST数据中提交,因此 .NET 无法查看 JavaScript 对其所做的任何更改。

处理post数据的控件都实现了IPostBackDataHandler

于 2012-09-18T18:18:40.253 回答
0

标签不会传递给后面的代码。为此,您将不得不使用输入(文本框)。

您可以使用 CSS 为输入设置样式,使其看起来像一个标签。

或者,您可以将值保留在隐藏字段中,并使用 javascript 在标签中显示值并将其传递回隐藏字段。

于 2012-09-18T18:15:43.837 回答