Я хочу перехватить любые обратные вызовы на текущей странице, прежде чем это произойдет. Я хочу сделать некоторые пользовательские манипуляции до того, как будет отправлена обратная передача. Любые идеи, как это сделать?
Как перехватить любую обратную передачу на странице? - ASP.NET
Ответ 1
Вот несколько вещей, которые вы можете сделать, чтобы перехватить обратную передачу на клиенте.
Функция __doPostBack выглядит следующим образом:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
Обратите внимание, что он вызывает "theForm.onsubmit()", прежде чем делать обратную передачу. Это означает, что если вы назначаете свою форму функции onsubmit javascript, она всегда будет вызываться перед каждой обратной передачей.
<form id="form1" runat="server" onsubmit="return myFunction()">
В качестве альтернативы вы можете фактически переопределить функцию __doPostBack и заменить ее на свой. Это старый трюк, который использовался в ASP.Net 1.0 дня.
var __original= __doPostBack;
__doPostBack = myFunction();
Это заменяет функцию __doPostBack вашим собственным, и вы можете вызвать оригинал из своего нового.
Ответ 2
Используйте следующие параметры
Все параметры работают с ajax-enabled-формы и простые формы.
return false to cancel submit in любой отправитель-отправитель.
Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "submit-handler", "alert(\"On PostBack\");");
Эквивалентный javascript - не используйте этот код с предыдущим кодом одновременно
// 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 really important to return true if you don't want to cancel
}
</script>
И если вы хотите, чтобы полный контроль над __doPostBack помещал этот script рядом с тегом формы
<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.0
Ответ 3
Чтобы получить обратную передачу перед страницей, вы можете создать HttpHandler и реализовать функцию ProcessRequest
.
Отметьте эту ссылку Scott Hanselman для хорошего сообщения в блоге о том, как это сделать (включая пример кода).
Ответ 4
Page.IsPostBack - ваш друг.
Ответ 5
Вы можете проверить обратную передачу в одном из событий страницы для своей формы.
Если вы хотите предпринять некоторые действия по обратной передаче, которая включает в себя создание элементов управления или управление представлением, то вы можете захотеть войти в более раннее событие, такое как Page_Init.
Попробуйте следующее:
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:
}
}
}
Ответ 6
не уверен, но я думаю, что вы ищете..
if (Page.IsPostBack)
{
}