2016-07-26 11 views
-2

jQueryのgetメソッドを使用してURLを呼び出すときに、コードが同じように動作しない理由がわかりません。c#asp UpdatePanel.Update()がjQueryのgetと連携していません

の背後にあるコード:

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:私はブラウザで直接URL http://localhost:54645/default?count=20を使用する場合は

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

     link.on('click', function() { 
      $.get(url); 
     });    
    });   
</script> 

UpdatePanel.Update()が正常に動作しますが、jQueryのを使用していますget何もしません。

ページライフサイクルイベントは同じ方法でトリガーされ、違いはありません(少なくとも私はそう考えています)。

$.post()も変更なしで試しました。

助けてください。

答えて

1

パネルの内側にasp:ボタンを配置する必要があります。

UpdatePanelは実際に完全なポストバックを行い、クライアントのページは関連する部分を更新することを知っているので、Page_Loadメソッドでこれを覚えておく必要があります。

+0

ボタンを置くことをお勧めしますか、javascriptを使用して '_doPostBack()'を呼び出すことをお勧めしますか? – Morpheus

+0

'_doPostBack'で動作しました:) – Morpheus

関連する問題