2016-07-26 14 views
-2

Bekam einen einfachen Testfall und nicht sicher, warum der Code verhält sich nicht die gleiche Weise beim Aufruf der URL mit jQuery get Methode.C# asp UpdatePanel.Update() funktioniert nicht mit jQuery erhalten

-Code hinter:

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(); 
} 

Markup:

<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> 

Wenn ich url verwenden http://localhost:54645/default?count=20 direkt in Browser, um die UpdatePanel.Update() funktionieren gut, aber mit dem jQuery get es tut nichts.

Die Seitenlebenszyklusereignisse werden auf dieselbe Weise ausgelöst, und es gibt keine Unterschiede (zumindest denke ich das).

Auch versucht mit $.post() ohne Änderung.

Jede Hilfe wird geschätzt.

Antwort

1

Sie müssen eine asp: -Taste in das Panel setzen.

UpdatePanel tatsächlich eine vollständige Post-Back, und die Seite im Client weiß, um den relevanten Teil zu aktualisieren, so dass Sie dies in Ihrer Page_Load Methode berücksichtigen müssen.

+0

Schlägst du vor, eine Schaltfläche zu setzen und bei der Verwendung von Javascript '_doPostBack()' aufzurufen? – Morpheus

+0

Es funktionierte mit '_doPostBack' :) – Morpheus