ASP.net - Кнопка - диалог подтверждения Javascript - выполнить НЕКОТОРЫЙ серверный код? - PullRequest
4 голосов
/ 23 августа 2011

У меня есть простая страница ASP.net, где пользователи могут редактировать информацию о себе.

При нажатии кнопки «Редактировать» форма переходит в режим редактирования, и я отображаю кнопки «Сохранить» и «Отмена», который ведет себя как ожидалось.

Что я хочу сделать, это:

Когда нажата кнопка «Сохранить», отобразить диалоговое окно подтверждения Javascript, спрашивающее пользователя, хотят ли они отправить электронное письмо на адресдругие пользователи, чтобы сообщить им о только что сделанном обновлении.

Если пользователь говорит «ОК», выполните весь серверный код для сохранения данных и отправьте электронное письмо.Если пользователь говорит Отмена, тогда выполните весь серверный код для сохранения данных, БЕЗ отправки электронной почты.

Итак, мне нужно поле javascript, чтобы установить флаг, который затем каким-то образом может быть прочитан на стороне сервера... тогда я могу сделать что-то вроде:

Sub btnSave_Click(sender, e) Handles btnSave.Click

    'Save all the data

    If sendEmail Then  'This flag set by reading result of javascript Confirm
        'Send the email
    End If

End Sub

Я знаю, как добавить поле подтверждения к кнопке Атрибуты, и сделал это.Я ищу ответ о том, как прочитать результат этого поля на стороне сервера ... другими словами, я ВСЕГДА хочу, чтобы произошла обратная передача страницы (после нажатия кнопки), но только НЕКОТОРЫЙ из кода обработчика событийвыполнить.

Надеюсь, что имеет смысл.

Спасибо

Мэтт

Ответы [ 2 ]

3 голосов
/ 23 августа 2011

Создайте скрытое поле и установите значение этого поля на основе результата подтверждения.Вы не показали код / ​​HTML для своей кнопки или формы, но можете ли вы вставить в нее что-то вроде этого:

<input type="hidden" id="sendEmail" name="sendEmail" value="" />

<input type="submit" value="Save" onclick="promptForEmail();" />

<script>
   function promptForEmail() {
      var result = Confirm("Send everybody an email?");
      // set a flag to be submitted - could be "Y"/"N" or "true"/"false"
      // or whatever suits
      document.getElementById("sendEmail").value = result ? "Y" : "N";
   }
</script>
1 голос
/ 23 августа 2011

Есть несколько способов сделать это, но я собираюсь использовать asp: HiddenField. В javascript, после того как пользователь подтвердит, пусть его результат будет установлен в скрытом поле. А на стороне сервера вы можете получить к нему доступ, как и к любому другому элементу управления asp.net.

Так

ваш aspx:

   <asp:HiddenField ID="HiddenField1" runat="server" Value="" />

CodeBehind:

  protected void Page_Load(object sender, EventArgs e)

  {

      if (!Page.IsPostBack)
      {

        var result = HiddenField1.Value; 
      } 
  }

Javascript:

 //after confirm call this
 function SetValue(val)
 {
   document.getElementById('HiddenField1').value=val;
 }
...