2016-07-26 30 views
-2

得到了一個簡單的測試用例,並且不確定爲什麼代碼在使用jQuery的get方法調用url時行爲不一樣。c#asp updatePanel.Update()不能用於jQuery的獲取

後面的代碼:

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()沒有變化。

任何幫助表示讚賞。

回答

1

您需要在面板中放置一個asp:按鈕。

UpdatePanel實際上做了一個完整的回傳,並且客戶端的頁面知道要更新相關部分,所以你需要在你的Page_Load方法中記住這一點。

+0

你是否打算放一個按鈕,當使用JavaScript調用'_doPostBack()'? – Morpheus

+0

它使用'_doPostBack' :) – Morpheus