2016-04-07 36 views
0

Codebehind işlevini bir kereden fazla çağırmayan bir JavaScript işlevine sahibim. Hata ayıkladı ve bunun bir kereden fazla aramadığını doğrulayabilirim. Kaybettiğim bir şey mi?JavaScript kodu çağırma codebehind işlevi sadece bir kez

JavaScript kodu:

function loader() { 
      for(var i=0;i<<%=array1.Length%>;i++) 
      {<%increment();%>; 
      alert(<%=counter%>); 
      } 

     } 

codebehind fonksiyonu:

public int counter = -1; 
     public void increment() 
     { counter++; } 
+0

gerçek sorun nedir deneyin aramak isterseniz? –

cevap

1

olarak @RonWilliams bu kod aspx render edildiğinde sadece başında, idam ve artık değil diyor.

Kodun yazdığınız formda yürütülmesinin tek yolu, örneğin asp:Repeater veya asp:TemplateField'un içinde GridView.

Eğer bir sunucu tarafı fonksiyonları AJAX veya Page Methods

1

Gerçekten istemci tarafı JavaScript kodunu ve bu gibi sunucu tarafı C# kodu iç içe olamaz. Temel olarak, görüntü işleme sayfanızda bir kez yapıldıktan sonra, PostBack oluşana kadar veya sunucuya açık bir WebMethod çağırmak için sunucuya erişemeyeceksiniz.

Bu, sayfa ilk olarak oluşturulduğunda bir kez çağrılır, aksi halde, diğer tekniklerden birini kullanmanız gerekir.

WebMethod Yaklaşım

Ben size bir yöntemi oluşturulmasına sebep olacak bir WebMethod, yararlanarak önce belirtildiği gibi

Bunu gerçekleştirmek olabilir kod-geride görünüyor böyle bir şey:

[WebMethod] 
public static void IncrementCounter() 
{ 
    // Since you want to return the incremented value, use ++counter 
    return ++counter; 
} 

Ve sonra ASPX sayfanızda bu sunucu tarafı yöntemine erişmek için AJAX çağrıları gerçekleştirme işlemek için kullanılacak jQuery kitaplığına bir başvuru eklemeniz gerekir:

<script src="https://code.jquery.com/jquery-2.1.4.js"></script> 
<script> 
    // This will ensure that your jQuery code is ready to run 
    $(function(){ 
      // When the page is ready, call your loading function 
      loader(); 
    }); 

    function loader() { 
     for(var i=0; i< <%=array1.Length%>; i++){ 
      // This will call your WebMethod 
      $.post('YourPage.aspx/IncrementCounter', function(count){ 
        // count will contain the counter value 
        alert(count); 
      }); 
     } 
    } 
</script> 
+0

cevabınız için teşekkürler, sorunun bu olduğunu anlıyorum, ancak kullanılmayacaksa neden böyle bir işlev kullanılabilir? Var olan kodla bahsettiğinizden başka herhangi bir geçici çözüm var, yardım gerçekten takdir ediliyor! – codemania23

+0

Yanıtımı, sunucu tarafı kodunuzu Web Yöntemi ile nasıl yanıtlayacağınızı gösteren temel bir örnek ekledim. –