Я написал 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(
"ctl00$wpm$CheckoutPage$ctl02$ContinueButton", "", true,
"OPC", "", 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(
"ctl00$wpm$CheckoutPage$ctl02$ContinueButton", "", true,
"OPC", "", false, false))" style="border-width:0px;" />
<br /><br />
</td>
</tr>