0

我有两个问题 - 首先,当同一页面上有自定义验证器时,.net 为什么会为 asp 按钮呈现 javascript onclick 事件,其次,我怎样才能摆脱 javascript?

关闭javascript时它工作正常,所以我不知道它的意义何在。这是一个小例子:

<form id="form1" runat="server">

    <asp:Button ID="Button1" OnClick="Button1_Click" Text="test" runat="server" />

    <asp:CustomValidator ID="CustomValidator1" runat="server" 
        OnServerValidate="Stuff_Validate" EnableClientScript="false">
    </asp:CustomValidator>

</form>

这将为按钮生成以下 html:

<input type="submit" name="Button1" value="test" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;Button1&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="Button1" />

没有自定义验证器,它是:

<input type="submit" name="Button1" value="test" id="Button1" />

有任何想法吗?

谢谢,

安妮莉

4

2 回答 2

0

添加 javascript 是因为自定义验证是通过 javascript 完成的。它应该在那里。您认为验证是如何完成的?如果您摆脱了 javascript,则验证将不起作用。

于 2011-02-02T10:07:07.683 回答
0

如果你看看什么System.Web.UI.WebControls.Button,你会明白为什么:

GetPostBackOptions()中,如果您在页面上有任何验证器(在当前验证组中),那么它将为回发生成一个脚本。

然后在 中AddAttributesToRender(),如果存在任何脚本,它们将在 onclick 事件中呈现出来。

如果您需要解决这个问题,那么您将不得不构建一个自定义按钮

于 2011-02-02T10:19:19.297 回答