在javascript中设置标签值

时间:2012-09-18 18:09:39

标签: javascript asp.net webforms

我有这样的代码

 <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中我试图设置label的值并调用codebehind函数,以便我将所需的值传递给代码隐藏:

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的值已更改值,但是当我在codebehind函数中调试btnInvokeImageRead_Click时,lblBookmarksIds的值具有其旧值。

有人知道为什么吗?

此致 沃伊切赫

2 个答案:

答案 0 :(得分:0)

标签不会传递给代码。您必须为此目的使用输入(TextBox)。

您可以使用CSS将输入设置为看起来像标签。

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

答案 1 :(得分:0)

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

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

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