В моем текущем проекте у меня есть рабочий процесс, в котором я должен показать пользователю два последовательных MessageBox. Первый из них скорее напоминает предупреждение, которое информирует пользователя о риске операции, которую он пытается выполнить. Я использую ClientClickEvent
одной кнопки ссылки, чтобы позволить пользователю подтвердить операцию:Как WebForm_OnSubmit не определен?
<asp:LinkButton runat="server" id="lockorder"
CommandName='LockOrder'
OnClientClick="return confirm('Do you really want to lock this order?');" />
Если пользователь подтверждает, что он уверен, что для выполнения операции, приложение выполняет некоторые проверки из кода позади. Результатом может быть то, что есть некоторые необработанные задачи. Это действительно, но пользователь должен получить информацию об этом, чтобы иметь возможность завершить эти задачи. Таким образом, я показываю второй диалог подтверждения, но на этот раз из кода позади:
if (tasksOpen)
{
ScriptManager.RegisterClientScriptBlock(
this.Page,
typeof(Page),
"Onload",
"var confirmationResult = window.confirm('There are some open tasks left, which might get closed. Do you really want to lock this order?'); if (confirmationResult) __doPostBack('ConfirmLockOrder', confirmationResult);",
true);
return;
}
Для лучшей читаемости здесь являюсь JS-фрагмент, который получит поднес к клиенту:
var confirmationResult
= window.confirm('There are some open tasks left, which might get closed. Do you really want to lock this order?');
if (confirmationResult)
__doPostBack('ConfirmLockOrder', confirmationResult);
Назад снова в коде Я получаю эту команду (например, внутри события Page_Load
) и продолжаю выполнять фактические операции. Все работало нормально, но с некоторыми изменениями я сделал это, прекратил выполнение обратной передачи.
Я ознакомился с клиентским скриптом, используя FireBug. Функция __doPostBack
(которая, по-видимому, автоматически сгенерирована) сообщает мне, что WebForm_OnSubmit
не определен. Я думаю, что это не определено, потому что диалог подтверждения get отображается в OnLoad
-event и, таким образом, до того, как форма загружена. Но почему функция __doPostBack
даже должна проверить, выполнялось ли это событие, если оно не определено? Могу ли я настроить __doPostBack
-behaviour? Или я должен выбрать другое событие? Или я совершенно здесь не прав?
Надеюсь, кто-то может указать мне в правильном направлении!
Ошибка в другом месте вашего JavaScript может привести к ошибке, как вы видели выше. Я бы сначала это проверял. Это может раздражать, чтобы найти проблему. –
Ошибок JavaScript не возникало ... Я пытался избежать JavaScript почти везде, потому что я не знаком с ним ... – Carsten
Хорошо, возможно, что ваш код работает до загрузки всего остального. Я не уверен в сроках ScriptManager для ввода кода. Однако вы можете изменить свой JavaScript на что-то вроде этого: window.onload = function() {[ваш код здесь]}; Если вы используете jQuery, лучше использовать метод .ready. –