Page`_IsValid имеет значение true, если установлен OnClientClick - PullRequest
1 голос
/ 13 июля 2009

Я написал UserControl, который присоединяет функцию Javascript к кнопке отправки формы. Функция Javascript гарантирует, что страница действительна, вызывая Page_IsValid, а затем приступает к выполнению некоторого кода. Для проблемных страниц Page_IsValid устанавливается в значение true при первой загрузке. Если я не установил OnClientClick, Page_IsValid будет правильно установлено в false при первой загрузке. Я не могу понять, почему Page_IsValid ведет себя так, потому что никакие события не запускаются вообще. Кроме того, это происходит только на некоторых страницах, а не на других. Кажется, что это происходит только со страницами, к которым прикреплены WebForm_DoPostBackWithOptions к событиям onclick Почему простое добавление события щелчка имеет такую ​​разницу?

Вот мой код:

Серверная сторона:

(control as Control).OnClientClick = "disableSubmit(); return false;";

Вот код, который генерируется:

Без OnClickEVent:

<input type="image" name="ctl00$wpm$CheckoutPage$ctl02$ContinueButton" 
  id="ctl00_wpm_CheckoutPage_ctl02_ContinueButton" 
  src="../images/continue.gif" alt="Continue" 
  onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(
    &quot;ctl00$wpm$CheckoutPage$ctl02$ContinueButton&quot;, &quot;&quot;, true, 
    &quot;OPC&quot;, &quot;&quot;, false, false))" style="border-width:0px;" />
<br /><br />
</td>

С OnClickEvent:

<tr id="ctl00_wpm_CheckoutPage_ctl02_trContinue">
   <td valign="top">
       <div id="ctl00_wpm_CheckoutPage_ctl02_AddressValidationSummary" 
           class="validationSummary" style="color:Red;display:none;"></div>  
   <br />
   <input type="image" name="ctl00$wpm$CheckoutPage$ctl02$ContinueButton" 
   id="ctl00_wpm_CheckoutPage_ctl02_ContinueButton" src="../images/continue.gif" 
   alt="Continue" onclick="disableSubmit(); 
   return false;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(
   &quot;ctl00$wpm$CheckoutPage$ctl02$ContinueButton&quot;, &quot;&quot;, true, 
   &quot;OPC&quot;, &quot;&quot;, false, false))" style="border-width:0px;" />
    <br /><br />
  </td>
</tr>

1 Ответ

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

У вас есть

...return false; WebForm_DoPostBackWithOptions...

в вашем OnClientClick, поэтому WebForm_DoPostBackWithOptions никогда не вызывается во втором примере.

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