2011-03-16 36 views
6

Sayfalar yaşam döngüsü boyunca çalıştırmak zorunda kalmadan asp.net web formları ile bu amaçla JQuery kullanıyorum ajax kullanmanın bir yolu var mı?Asp.net web formları ile ajax nasıl kullanılır

+0

neden bunu yapmak isteyeyim:

MethodName denir PageName.aspx statik [WebMethod] dekore yöntem göz önüne alındığında

, bu istemci tarafında diyebiliriz nasıl bir örnektir? – BentOnCoding

+1

Sayfa yaşam döngüsünden geçmek, ihtiyacınız olan tüm veriler alındığında veya AJAX aracılığıyla gerçekleştirilen bir eylem olduğunda anlamsızdır. –

cevap

7

jQuery'yi kullanıyorsanız, belirtildiği gibi, use jQuery to call Page Methods directly MicrosoftAjax.js yükünü ve PageMethods.MethodName() sözdizimini etkinleştirmek için oluşturduğu hizmet proxy'sini etkilemeden yapabilirsiniz.

$.ajax({ 
    type: "POST", 
    url: "PageName.aspx/MethodName", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
    // Do something interesting with msg.d here. 
    } 
}); 
1

Bir yol olduğundan emin ol. this answer'a bakın. Bu özel örnek, arka uçtaki MVC'yi kullanır, ancak benzer şekilde temel ASP.NET ile de yapabilirsiniz - Sadece PageMethods/WebMethods via AJAX numaralı telefonu arayın.

Anahtarlardan biri, WebMethod özniteliği üzerinde statik bir yöntem bildirmektir.

+1

Ayrıca, UpdatePanels'ı da düşünebilirsiniz, ancak buradaki dezavantaj, sayfanın sadece bir kısmı gibi son kullanıcıya bakarken, hala ViewState'i geri gönderiyor ve tam sayfa yaşam döngüsünden geçiyorsunuz. sunucusu. Yuck. – Kon

+0

Veya HttpHandler ... –

+0

Bu şekilde yaparsam scriptmanager'a ihtiyacım var mı? – chobo

7

Ne yapmaya çalıştığınıza bağlı olarak, Web Yöntemleri veya Http İşleyicileri kullanabilirsiniz. Web Yöntemleri biraz daha kolay olabilir ve sadece [WebMethod] özniteliği ile süslenen sunucu tarafı statik işlevleridir.

C#:

[WebMethod] 
public static string SayHello(string name) 
{ 
    return "Hello " + name; 
} 

ASPX:

İşte bir örnek

<asp:ScriptManager ID="sm" EnablePageMethods="true" runat="server"/> 

<script type="text/javascript"> 
    #(function() 
    { 
     $(".hellobutton").click(function() 
     { 
      PageMethods.SayHello("Name", function(result) 
      { 
       alert(result); 
      }); 
     }); 
    } 
</script> 

<input type="button" class="hellobutton" value="Say Hello" /> 
+0

kodu çalışmıyor! – Vijayaraghavan

1

tabir edilenler Sen Sayfa Yöntemleri kullanabilirsiniz.

Temelde Page numaralı yöntemlerdir, ancak statik olarak bildirilirler.

public class MyPage : System.Web.UI.Page 
{ 
    [WebMethod] 
    public static string Reverse(string message) { 
     return message.Reverse(); 
    } 
} 
Daha sonra istemci komut dosyası bu gibi kullanılabilir

:

function reverseMyString(message) { 
    // Magically generated code appears 
    PageMethods.SendForm(message, OnSucceeded, OnFailed); 
} 

function OnSucceeded(result) { alert(result) } 
function OnFailed(error) { alert(error.get_message()) } 

Onlar belirli bir sayfa kurar aynı Web Formları işlevselliği içinde kalabilirler çünkü asmx web hizmetleri ile karşılaştırıldığında çok zarif .

İlgili konular