c#asp UpdatePanel.Update()不适用于jQuery';我们明白了

本文关键字:我们 明白 jQuery 适用于 Update UpdatePanel 不适用 c#asp | 更新日期: 2023-09-27 17:58:38

得到了一个简单的测试用例,不确定为什么使用jQuery的get方法调用url时代码的行为不一样。

代码背后:

protected UpdatePanel UpdPanel;
protected PlaceHolder PlHolder;
protected virtual void Page_Load(object sender, EventArgs e)
{
    PlHolder.Controls.Clear();
    var count = Request.QueryString["count"];
    AddControl(string.IsNullOrEmpty(count) ? 10 : Convert.ToInt32(count));
}
public void AddControl(int count)
{
    for (var i = 0; i < count; i++)
    {
        var control = (TestList)Page.LoadControl("~/List/TestList.ascx");
        control.TextBoxText = string.Format("{0} - test", i);
        PlHolder.Controls.Add(control);
    }
    UpdPanel.Update();
}

标记:

<asp:UpdatePanel runat="server" ID="UpdPanel" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:PlaceHolder runat="server" ID="PlHolder"></asp:PlaceHolder>
    </ContentTemplate>
</asp:UpdatePanel>

Javascript:

<script type="text/javascript">
    $(function() {
        var link = $('.link'),
            url = window.location.href.replace("#", "") + "default.aspx?count=20";
        link.on('click', function() {
            $.get(url);
        });            
    });        
</script>

如果我直接在浏览器中使用url http://localhost:54645/default?count=20UpdatePanel.Update()可以正常工作,但使用jQuery的get则没有任何作用。

页面生命周期事件是以相同的方式触发的,没有区别(至少我认为是这样)。

还尝试使用$.post(),但没有更改。

感谢您的帮助。

c#asp UpdatePanel.Update()不适用于jQuery';我们明白了

您需要在面板内部放置一个asp:按钮。

UpdatePanel实际上做了一个完整的postback,客户端中的页面知道要更新相关部分,所以在page_Load方法中需要记住这一点。