подтвердить окно сообщения - PullRequest
1 голос
/ 08 февраля 2011

Я должен показать да нет всплывающее окно сообщения для функции>

Это то, что я делаю для всплывающего окна с предупреждением>

  Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "<script>alert('File Updated');</script>");

Это то, что я хочу сделать в коде:

if (ID != 0)
{
     Page.ClientScript.RegisterStartupScript(this.GetType(), "Confirm", "<script>confirm('are you sure?');</script>");

    if (yes)
    {
        perform function
    }
    else
    {
        return;
    }

}

Подтверждение не работает ,, какие-либо предложения о том, как это сделать спасибо

Редактировать порцию:

  1. Перейти на страницу
  2. Добавить значения в текстовое поле
  3. Нажмите кнопку «Сохранить», чтобы добавить значение в базу данных
  4. Спросите пользователя, уверен ли он, что хочет сделать это, «Вы уверены?», Всплывающее окно подтверждения
  5. Теперь вышеприведенное окно подтверждения будет иметь место, только если идентификатор равен! = 0, иначе всплывающее окно не требуется.
  6. если он говорит «да», то добавьте в базу данных и покажите всплывающее окно с предупреждением, что значения введены в БД.
  7. если НЕТ, просто не добавляйте в БД и просто возвращайтесь.

так я получаю окно подтверждения, как это .. но как я могу получить то, что выбрано

string scriptString = "<script language='JavaScript'> ";
            scriptString += "confirm ('Are you sure you want to Close this period.')";
            scriptString += "</script>";
            Response.Write(scriptString);

Ответы [ 6 ]

6 голосов
/ 08 февраля 2011

Есть ли кнопка, на которую вы нажимаете, чтобы вызвать действие?Если это так, вы должны добавить клиентские события в свой веб-элемент управления следующим образом:

<asp:ImageButton runat="server" ID="DeleteUrlImageButton" ImageUrl="~/Images/icon_remove.gif"
  OnClick="DeleteUrlImageButton_Clicked"
  OnClientClick="return confirm('Are you sure you want to delete?');" />

Если пользователь выбирает да, обратная передача происходит как обычноЕсли они выбирают «нет», даже отменяется и обратной передачи не происходит.Это, IMO, способ справиться с этим, потому что он предотвращает любую дополнительную активность сервера, если они выбирают нет.

2 голосов
/ 08 февраля 2011

Добавить кнопку ссылки.

В OnClientClick добавьте

javascript:return confirm('Are you sure')

Это не запустит обратную передачу, если они нажмут нет. Он запустит обратную передачу, если они нажмут «да».

Затем в коде (OnClick) кнопки выполняется обработка на стороне сервера: (Будет выполнено, только если они нажмут да)

if (ID != 0)
{
Perform function
}
1 голос
/ 08 февраля 2011

Здесь проблема в том, что без обратной отправки вы не сможете получить значение поля подтверждения.JavaScript запускается на стороне клиента, и пока не произойдет обратная передача (либо через ajax, либо обычным способом), он не сможет «общаться» с вашим файлом C #.

Что вам нужно сделать, это добавить подтверждениеполе JavaScript, которое, если нажать Да, будет отправлять обратно на вашу страницу Asp.net и запускать код либо через Ajax, либо (пример) form.submit().

1 голос
/ 08 февраля 2011

Вы не можете сделать это таким образом.RegisterStartupScript просто регистрирует скрипт, который будет включен, когда страница будет окончательно отображена.После рендеринга (в HTML) HTML-код отправляется в браузер.Поэтому, когда пользователь, наконец, увидит это всплывающее окно, ваш код уже давно завершен.

РЕДАКТИРОВАТЬ:

См. ответ от Mike C .: вам нужно переместить подтверждениедо до отправки.

1 голос
/ 08 февраля 2011

Похоже, что вы пытаетесь сделать (в упрощенном сценарии):

  1. Попросите пользователя перейти к Page.aspx
  2. Проверьте значение ID (допустим, что это параметр строки запроса)
  3. Если значение ID не равно нулю, попросить пользователя подтвердить
  4. Если они подтвердят, что-то сделать "101"

Ошибка, которую вы делаете, - это попытка полностью обработать 2, 3 и 4 в коде.Сценарий, который вы создаете (вызывая RegisterStartupScript), не будет выполнен, пока вся страница не будет возвращена пользователю, после чего код для шагов 3 и 4 проверяет значение IDи что-то делать уже будет «пропущено»

Что вам нужно сделать, это решить, как разделить работу между клиентом и сервером, так как то, что вы пытаетесь сделать, только что выигралоне работаетНе зная, как работают ваши страницы и откуда берется значение идентификатора, я не могу привести конкретный пример, но что-то вроде:

  1. Пусть ваша страница проверит ID, чтобы увидеть, если онасоответствует вашим критериям, если это так, испускает javascript, но с некоторым дополнительным javascript, который проверяет ответ на приглашение и вызывает повторную отправку страницы, но с подтвержденным = yes, добавленным в строку запроса
  2. Пусть ваша страница проверит параметр строки запроса «подтверждено», чтобы убедиться, что это так.Если это так, ТО сделайте работу
0 голосов
/ 08 февраля 2011

Page.ClientScript.RegisterStartupScript зарегистрирует этот сценарий на клиенте.Насколько я вижу, вы выполняете оператор if на сервере.Не могли бы вы указать, что означает подтверждение не работает?Отображается ли окно предупреждения, но не нужно нажимать да / нет?Если это так, переместите оператор if ... else на клиента.В любом случае, я предлагаю вам заменить RegisterStartupScriptBlock следующим кодом:

ClientScript.RegisterClientScriptBlock
     (this.GetType(), "confirm", "alert('do')", true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...