【问题标题】:c# asp UpdatePanel.Update() not working with jQuery's getc# asp UpdatePanel.Update() 不适用于 jQuery 的 get
【发布时间】:2016-07-26 18:51:57
【问题描述】:

得到一个简单的测试用例,但不确定为什么在使用 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=20 UpdatePanel.Update() 可以正常工作,但使用 jQuery 的 get 它不会做任何事情。

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

还尝试使用$.post(),没有任何变化。

任何帮助表示赞赏。

【问题讨论】:

    标签: javascript c# jquery asp.net forms-authentication


    【解决方案1】:

    你需要在面板里面放一个 asp:button。

    UpdatePanel 实际上做了一个完整的回发,并且客户端中的页面知道要更新相关部分,因此您需要在 Page_Load 方法中记住这一点。

    【讨论】:

    • 您是否建议放置一个按钮并在使用javascript时调用_doPostBack()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 2013-08-05
    • 2015-04-21
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多