SORU
20 AĞUSTOS 2009, PERŞEMBE


ASP.NET geri gönderme ile JavaScript

jQuery sürüklenebilir divbirkaç küçük ler var. divler bu _doPostBack() JavaScript işlevini kullanmak UpdatePanel ve bir dragstop yerleştirilir. nerede ben sayfaları formundan gerekli bilgileri ayıklamak.

Benim sorunum bu işlev tüm sayfayı okuduğumda yeniden yüklenir ama ben sadece update panel yeniden yüklenecek.

CEVAP
6 Ocak 2012, Cuma


Burada komple bir çözüm

ASP.NET sayfanın tüm form etiketi

<form id="form1" runat="server">
    <asp:LinkButton ID="LinkButton1" runat="server" /> <%-- included to force __doPostBack javascript function to be rendered --%>

    <input type="button" id="Button45" name="Button45" onclick="javascript:__doPostBack('ButtonA','')" value="clicking this will run ButtonA.Click Event Handler" /><br /><br />
    <input type="button" id="Button46" name="Button46" onclick="javascript:__doPostBack('ButtonB','')" value="clicking this will run ButtonB.Click Event Handler" /><br /><br />

    <asp:Button runat="server" ID="ButtonA" ClientIDMode="Static" Text="ButtonA" /><br /><br />
    <asp:Button runat="server" ID="ButtonB" ClientIDMode="Static" Text="ButtonB" />
</form>

Sayfanın arka plan Kod Sınıfı tüm İçeriği

Private Sub ButtonA_Click(sender As Object, e As System.EventArgs) Handles ButtonA.Click
    Response.Write("You ran the ButtonA click event")
End Sub

Private Sub ButtonB_Click(sender As Object, e As System.EventArgs) Handles ButtonB.Click
    Response.Write("You ran the ButtonB click event")
End Sub
  • Bu bağlantı düğmesi __doPostBack javascript işlevi istemci için işlenir sağlamak için dahildir. Sadece Düğme kontrolleri olan __doPostBack bu fonksiyon, işlenecek neden olmaz. Bu işlev, en ASP.NET sayfa üzerindeki kontrollerin çeşitli olması sayesinde işlenecek, boş bağlantı düğmesi genellikle gerekli değildir

Neler oluyor?

İki giriş kontrolleri istemci görüntülenir:

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
  • __EVENTTARGET __doPostBack 1 argüman alır
  • __EVENTARGUMENT __doPostBack 2 argüman alır

__DoPostBack fonksiyonu böyle: belge

function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
  • Gördüğünüz gibi, gizli girişler için değerleri atar.

Formu gönderdiğinde / geri gönderme oluşur:

  • Eğer Sunucu Kontrolü çalıştırmak istediğiniz Düğmeye (javascript:__doPostBack('ButtonB','') o zaman bu düğme için düğme tıklatma işleyicisi çalışır. Uniqueıd verdiyse

Ne olursa tıklatın işleyicisi çalıştırmak istemiyorum bile, ama onun yerine başka bir şey yapmak ister misin?

Ne istersen __doPostBack bağımsız değişken olarak iletebilirsiniz

O zaman gizli bir giriş değerleri analiz etmek ve belirli bir kod çalıştırmak buna göre:

If Request.Form("__EVENTTARGET") = "DoSomethingElse" Then
    Response.Write("Do Something else") 
End If

Diğer Notlar

  • Eğer çalıştırmak istiyorum denetimin KİMLİĞİ bilemiyorum eğer doğru değilse ne?
    • Eğer kabul edilebilir ClientIDMode="Static", sonra ise böyle bir şey yapabilirsiniz: __doPostBack('<%= myclientid.UniqueID %>', '').
    • Veya: __doPostBack('<%= MYBUTTON.UniqueID %>','')
    • Bu isterseniz javascript denetimi benzersiz kimliği enjekte edecek

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caroline Martin

    Caroline Mar

    19 EYLÜL 2008
  • Kim Barbin

    Kim Barbin

    3 Mayıs 2012
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010