如何从jquery访问asp.net ajax updatepanel中设置的值

时间:2009-11-20 17:57:33

标签: jquery asp.net-ajax

我通过代码隐藏在更新面板中设置(服务器控件的)值,它必须使用一些javascript方法来设置这些值。如果我在此之后尝试通过jquery访问它们,它不会识别由asp.net ajax设置的任何内容

asp.net:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>

<asp:Button ID="Button1" runat="server" Text="Set Label From Ajax" onclick="Button1_Click" />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>


</ContentTemplate>
</asp:UpdatePanel>

代码背后:

protected void Button1_Click(object sender, EventArgs e)
{
    this.Label1.Text = "Hello, world";
}

单击按钮后Label1为“Hello,world” - 以下内容正确获取html控件,但文本为emtpy:

jQuery的:

var text = $("[id$='Label1']").text();
// text = ""; should be "Hello, World"

2 个答案:

答案 0 :(得分:0)

您是否检查了实际发送到浏览器的HTML?请记住,JQuery对ASP.NET一无所知 - 只是HTML(当然是JavaScript)

答案 1 :(得分:0)

<script type=”text/javascript”>

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(panelLoaded);

function panelLoaded(sender, args){

    var text = $("label[id*='Label1']").text();

}

</script>

这将访问PageRequestManager实例的事件处理程序,向pageLoaded事件添加一个函数,并在更新面板加载完成后调用该函数。因为您使用的是ajax,所以jquery代码仅在设置值之前在页面的第一次加载时运行。这将在UpdatePanel加载后分配文本,Label1实际上有文本。