ASP.Net PostbackURL не работает, если я добавлю Javascript Validation - PullRequest
2 голосов
/ 20 июля 2009

У меня есть пользовательский контроль в ASP.Net с кнопкой, которую я использую для обратной передачи. Эта кнопка также имеет некоторую проверку Javascript, которая выполняется перед обработкой события.

Сегодня я попытался отправить обратно на другой URL, установив свойство кнопки PostBackURL. Но это не сработало, и страница продолжала публиковаться. Поэтому я провел некоторое расследование и обнаружил, что.

  1. Пост обратно на другой URL реализован через Javascript в ASP.Net.
  2. Если я продолжу вызов моей функции проверки

    OnClientClick = "return validate ()" Тогда пост обратно не происходит.

  3. Если я удалю вызов функции проверки, обратная передача работает нормально.

Так выглядит разметка кнопки при включенной проверке.

<input type="submit" name="ctl00$cphMain$pra1$btnSubmit" value="Submit" onclick="return validate();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$pra1$btnSubmit&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Result.aspx&quot;, false, false))" id="ctl00_cphMain_pra1_btnSubmit" style="width:80px;" />

Без проверки

<input type="submit" name="ctl00$cphMain$pra1$btnSubmit" value="Submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$pra1$btnSubmit&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Result.aspx&quot;, false, false))" id="ctl00_cphMain_pra1_btnSubmit" style="width:80px;" />

Вы заметите, что вызов функции return validate () отсутствует, и это все меняет.

Как мне заставить это работать?

Ответы [ 2 ]

13 голосов
/ 20 июля 2009

Заменить

OnClientClick="return validate();" 

с

OnClientClick="if (!validate()) { return false; }"
2 голосов
/ 20 июля 2009

- потому что return не позволяет выполнить WebForm_DoPostBackWithOptions независимо от результата проверки.

Вы можете попробовать (без кавычек):

"!validate() ? return false : "

таким образом это закончится как:

!validate() ? return false : WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$pra1$btnSubmit&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Result.aspx&quot;, false, false))

грубый взлом, но это для вас веб-форма, один большой взлом на вершине другого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...