2010-02-10 14 views
11

Ben oluşur ÖNCE geçerli sayfanın herhangi göndermeleri yolunu kesmek istiyorum. Bir geri bildirim sunulmadan önce bazı özel manipülasyon yapmak istiyorum. Herhangi bir fikir nasıl yapılır?Sayfadaki herhangi bir geri dönüş nasıl engellenir? - ASP.NET

+0

Lütfen daha spesifik olmalısınız: "geri göndermeden önce" ile ne demek istiyorsunuz? –

+0

Gereksinimlerinizde bir geri bildirimi engellemek istediğinizi söylüyorsunuz * ne zaman olursa olsun *, * daha sonra * kesmek istediğinizi söylediğiniz cevaplara cevap verin. Hangisini istersin? İstemci tarafı mı yoksa sunucu tarafı mı yapmak istiyorsunuz? – slugster

+0

Karışıklık için özür dilerim. Sorunu açıklığa kavuşturmak için düzenledik. Oluşmadan önce onu durdurmak istiyorum. Bunu sunucu tarafında yapmak istiyorum. Yine de, müşteri tarafında da nasıl yapılacağını bilmek isteyebilirim. – NLV

cevap

20

Eğer istemci üzerinde bir geri gönderme yolunu kesmek için yapabileceğiniz birkaç şey var.

__doPostBack fonksiyonu şu şekildedir: o çağırır

function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 

Bildirim o "theForm.onsubmit()" aslında geri gönderme yapmadan önce. Bu, formunuzu bir onsubmit javascript işlevi olarak atarsanız, her geri gönderme işleminden önce her zaman çağrılacağı anlamına gelir.

<form id="form1" runat="server" onsubmit="return myFunction()"> 

Alternatif olarak, gerçekten __doPostBack işlevini geçersiz kılabilir ve kendiniz değiştirebilirsiniz. Bu, ASP.Net 1.0 gün içinde kullanılmış olan eski bir hiledir.

var __original= __doPostBack; 
__doPostBack = myFunction(); 

Bu kendi ile __doPostBack fonksiyonunu değiştirir, ve yeni birinden orijinal çağırabilir.

+0

Mükemmel! Tam olarak istediğim şekilde çalıştım. – NLV

+1

Nasıl __doPostBack = myFunction(); iş? Olmazsa __doPostBack = MyFunction ;? –

0

emin değilim ama aradığınız düşünüyorum ..

if (Page.IsPostBack) 
    { 
    } 
+0

Bir geri bildirim sunulmadan önce bazı manipülasyonlar yapmak istiyorum. Geri gönderme gerçekleştikten sonra değil. Umarım anlarsın. – NLV

1

Page.IsPostBack arkadaşın.

+1

Bir geri gönderme sunulmadan önce bazı manipülasyonlar yapmak istiyorum. Geri gönderme gerçekleştikten sonra değil. Umarım anlarsın. – NLV

1

Sen formunuz için sayfa olaylardan birinde bir geri gönderme için kontrol edebilirsiniz.

o zaman page_ınit gibi önceki bir olayı gelip isteyebilirsiniz Görünüm durumu kontrollerini oluşturarak veya manipüle içerir postback bir işlem yapmaya istiyorsanız

. Bir HttpHandler oluşturabilir, bir sayfa bulmadan önce

protected void Page_Init(object sender, EventArgs e) 
    { 
     if (Page.IsPostBack) 
     { 
      //Check for your conditions here, 

      if (Page.IsAsync) 
      { 
       //also you may want to handle Async callbacks too: 
      } 
     } 
    } 
+0

Bir geri gönderme sunulmadan önce bazı manipülasyonlar yapmak istiyorum. Geri gönderme gerçekleştikten sonra değil. Umarım anlarsın. – NLV

2

postback almak ve ProcessRequest işlevi uygulamak:

bu deneyin.

(örnek kod dahil) bunu nasıl iyi bir blog yazısı için kontrol this Scott Hanselman link.

+0

Bağlantı için teşekkürler. – NLV

6

aşağıdaki seçenekleri kullanın

Tüm seçenekler ajax etkin formları ve basit formlar ile çalışır.
herhangi bir istek işleyici içinde göndermeyi iptal etmek için false değerini döndürün.

Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "submit-handler", "alert(\"On PostBack\");"); 

Eşdeğer javascript eşzamanlı önceki kod

// Modify your form tag like this 
<form onsubmit="javascript:return submit_handler();" ...> 

// Add this script tag within head tag 
<script type="text/javascript"> 
    function submit_handler() { 
     // your javascript codes 
     // return false to cancel 
     return true; // it's really important to return true if you don't want to cancel 
    } 
</script> 

ile bu kodu kullanmak --don't Ve eğer isterseniz __doPostBack üzerinde tam kontrolü yanında form etiketi

bu senaryoyu koymak
<script type="text/javascript"> 
    var default__doPostBack; 
    default__doPostBack = __doPostBack; 
    __doPostBack = function (eventTarget, eventArgument) { 
     // your javascript codes 
     alert('Bye __doPostBack'); 
     default__doPostBack.call(this, eventTarget, eventArgument); 
    } 
</script> 

ASP.NET 4 ile test edilmiştir.0

İlgili konular