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
cevap
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.
Mükemmel! Tam olarak istediğim şekilde çalıştım. – NLV
Nasıl __doPostBack = myFunction(); iş? Olmazsa __doPostBack = MyFunction ;? –
emin değilim ama aradığınız düşünüyorum ..
if (Page.IsPostBack)
{
}
Bir geri bildirim sunulmadan önce bazı manipülasyonlar yapmak istiyorum. Geri gönderme gerçekleştikten sonra değil. Umarım anlarsın. – NLV
Page.IsPostBack arkadaşın.
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
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 önceprotected 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:
}
}
}
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
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.
Bağlantı için teşekkürler. – NLV
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
Lütfen daha spesifik olmalısınız: "geri göndermeden önce" ile ne demek istiyorsunuz? –
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
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