Почему мой код JavaScript не работает на моей странице веб-форм ASP.NET? - PullRequest
0 голосов
/ 10 октября 2018

У меня проблема с отправкой формы на моей странице веб-форм.У меня есть функция, которая должна после подтверждения, нажав OK, выполнить document.forms.submit и отправить пользователя на другую страницу.

Я не получаю никакой ошибки для JavaScript при попытке отладки в Chrome, и яя не получаю исключение при попытке пройти через функцию C #.Может ли кто-то с большим опытом работы с формами ввода ввода JavaScript помочь в этом или показать мне лучший способ с данным кодом?

protected virtual void WriteCancelDiv(string claim_id, string promotion_id)
{
    string innerHtml = "<form action=\"TestPath/claim_cancel.aspx\" method=post><input type='hidden' name='claim_id' value='" + claim_id + "'><input type='hidden' name='promotion_id' value='" + promotion_id + "'>";
    innerHtml += @"<script> 
                   debugger;
                   function Clicked(){
                       var b = confirm(""This cannot be undone.  Are you sure you want to cancel?"");
                       if (!b) {return;}
                       else {document.forms[0].submit();}
                   }
                   </script>
                   <input class=""btn btn-sm btn-primary"" type=""submit"" value=""Cancel Claim"" onClick=""Clicked();"">
                </form>";
    cancel_div.InnerHtml = innerHtml;
}

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Смешивание клиентской логики с веб-формами ASP.NET может быть довольно трудным делом.В своем коде вы вводите HTML (включая элемент формы) в div.Проблема заключается в том, что каждый веб-элемент управления ASP.NET (включая ваш div) уже находится внутри огромного элемента формы обтекания, который обеспечивает обратную передачу этих элементов управления.

Веб-формы ASP.NET отображаются в простом HTML нана стороне клиента, и вот как это работает.Вокруг всего, что вы видите, всегда есть один огромный элемент формы.К сожалению, добавление элемента формы в другой элемент формы не является допустимым HTML.Таким образом, ваш подход не сработает.

Я не буду приводить здесь никакого кода, но дам вам описание того, как мне решить эту проблему.

Так что эточто вы пытаетесь достичь, если я не ошибаюсь:

Когда нажата кнопка A , появляется другая кнопка B .При нажатии этой кнопки B сначала откроется диалоговое окно с запросом о том, действительно ли он / она хочет выполнить эту задачу.Если это так, пользователь перенаправляется на другую страницу.

Я бы сделал это так:

  1. Вы добавили кнопку B какдругой серверный элемент управления со скрытой видимостью.
  2. В обработчике события нажатия кнопки A вы устанавливаете видимость кнопки B в видимом виде.
  3. Вы можете добавить диалоговое окно подтверждения к атрибуту onClientClick кнопки B .
  4. В обработчике события нажатия кнопки кнопки B вы делаетеперенаправление на нужную страницу.
0 голосов
/ 10 октября 2018

эта строка

<input class=""btn btn-sm btn-primary"" type=""submit"" value=""Cancel Claim"" onClick=""Clicked();"">

замените ее на

<input class='btn btn-sm btn-primary' type='submit' value='Cancel Claim' onClick='Clicked();'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...