【问题标题】:Why does .NET render javascript for a button when there's a custom validator on the page?当页面上有自定义验证器时,为什么 .NET 会为按钮呈现 javascript?
【发布时间】:2011-02-01 15:10:38
【问题描述】:

我有两个问题 - 首先,当同一页面上有自定义验证器时,为什么 .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" />

有什么想法吗?

谢谢,

安妮

【问题讨论】:

    标签: javascript .net asp.net customvalidator aspbutton


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好酷。我希望它不会在以任何方式不需要它时生成任何 javascript,但我想我们当时就被它困住了。这不是一个大问题,我只是看看我们的前端要求我们删除所有不必要的 javascript。只要它在关闭 javascript 的情况下工作,我就很高兴。 :) 感谢您的解释!
    • 还添加了更多的 javascript、验证脚本、回发功能等。
    【解决方案2】:

    添加 javascript 是因为自定义验证是通过 javascript 完成的。它应该在那里。您认为验证是如何完成的?如果您摆脱了 javascript,验证将无法正常工作。

    【讨论】:

    • 不,验证不是通过 javascript 完成的,它只是服务器端。关闭 javascript 后也能正常工作。
    • 抱歉,不知道您只是在进行服务器端验证。但是需要定义,没有办法去掉。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2010-12-03
    • 2011-08-04
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2012-02-24
    相关资源
    最近更新 更多