如果设置了OnClientClick,则页面`_IsValid设置为true

时间:2009-07-13 06:33:02

标签: asp.net validation webforms

我编写了一个UserControl,它将Javascript函数附加到表单的提交按钮。 Javascript函数通过调用Page_IsValid确保页面有效,然后继续执行一些代码。对于有问题的页面,Page_IsValid在首次加载时设置为true。如果我没有设置OnClientClick,则在第一次加载时Page_IsValid被正确设置为false。我无法弄清楚为什么Page_IsValid会以这种方式运行,因为根本没有事件被触发。此外,它只发生在某些页面而不是其他页面上。这似乎只发生在其onclick事件附加了WebForm_DoPostBackWithOptions的页面上。为什么简单地添加点击事件会产生这样的差异?

这是我的代码:

服务器端:

(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 :(得分:0)

你有

...return false; WebForm_DoPostBackWithOptions...
在您的OnClientClick中

,因此在您的第二个示例中永远不会调用WebForm_DoPostBackWithOptions。