Получение пользовательского ввода с ПОДТВЕРЖДЕНИЕМ

#c# #javascript #asp.net

#c# #javascript #asp.net

Вопрос:

мне нужно, чтобы пользователь нажал OK или CANCEL:

 protected void Button1_Click(object sender, EventArgs e)
    {
        CallRecursive(TreeView1);

        string confirmationMessage;
        confirmationMessage = @"Please review the data before submitting:"    "rn"
          "Sample Received Date: "   received_dateTextbox.Text   "rn"
          "Site of Ocurrence: "   site_of_occurrenceTextBox.Text   "rn"
          "Occurrence Date: "   occurrence_dateTextBox.Text   "rn"
          "Report Date: "   report_byTextBox.Text   "rn"
          "Specimen ID: "   spec_idTextBox.Text   "rn"
          "Batch ID: "   batch_idTextBox.Text   "rn"
          "Report Initiated By: "   report_byTextBox.Text   "rn"
          "Problem Identified By: "   RadioButtonList1.SelectedValue   "rn"
          nodetexts;

        HiddenFieldConfirmation.Value = confirmationMessage;

************i need function ConfirmWithUser() to run here from javascript*************


            if (HiddenFieldUserConfirmed.Value != "no")
        {
            SubmitData();

            CallRecursive(TreeView1);
            nodetexts  = ";";
        }
    }
  

вот javascript:

 function ConfirmWithUser() {
            if (confirm(document.getElementById('HiddenFieldConfirmation').value) == true)

                            { document.getElementById('HiddenFieldUserConfirmed').value='yes'; }

                                else

                            { document.getElementById('HiddenFieldUserConfirmed').value='no';}
  

как мне запустить эту функцию ConfirmWithUser() при нажатии кнопки внутри кода за кодом, как показано выше:

другие слова, которые мне нужны:

  1. после того, как пользователь нажимает кнопку, выполняется первая часть codebehind
  2. javascript внутри codebehind завершается
  3. последняя часть кода выполняется

Комментарии:

1. Вы не понимаете HTTP-модель. Ваш дизайн не может работать; вам нужна отдельная обратная передача после установки значения в клиенте.

2. Это принципиально невозможно. Вам нужно изучить HTTP и программирование клиент-сервер.

3. @slaks, вам нужно немедленно выполнить одно и то же

Ответ №1:

В Javascript нет переменной с именем confirmationMessage .
Вам нужно вызвать HttpUtility.JavaScriptStringEncode и вставить значение переменной на стороне сервера в виде строкового литерала Javascript.

Однако ваш дизайн не может работать; if (HiddenFieldUserConfirmed.Value != "no") он будет выполняться (на сервере) перед кодом Javascript на стороне клиента.

Вам нужно понимать, как работает разделение HTTP и клиент / сервер.

Ответ №2:

Из вашего кода неясно, где выполняется код.

Вам необходимо зарегистрировать скрипт в page_load внутри раздела !ispostback. Затем вам нужно проверить скрытое значение, например, в ответ на обработчик нажатия кнопки.

Более подробная информация после редактирования

Вам нужно переместить код, который создает ваше сообщение javascript, в ваш page_load и зарегистрировать обработчик onclientclick с помощью функции javascript. Затем при нажатии кнопки этот javascript будет запускаться, заполняя ваше скрытое поле, а затем отправляя форму для обработки на стороне сервера.