ページにカスタムバリデーターがあるときに、.NETがボタンにJavaScriptをレンダリングするのはなぜですか?

StackOverflow https://stackoverflow.com/questions/4864230

質問

2つの質問があります。まず第一に、.NETが同じページにカスタムバリーターがあるときにASPボタンのJavaScript OnClickイベントをレンダリングするのはなぜですか?

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" />

何か案は?

ありがとう、

アネリー

役に立ちましたか?

解決

あなたが何を見るなら System.Web.UI.WebControls.Button 理由がわかりますか:

GetPostBackOptions(), 、ページに(現在の検証グループ)にバリーターがある場合、ポストバックのスクリプトが生成されます。

その後 AddAttributesToRender(), 、スクリプトが存在する場合、それらはオンクリックイベントでレンダリングされます。

これを回避する必要がある場合は、カスタムボタンを作成する必要があります

他のヒント

JavaScriptは、JavaScriptを介してカスタム検証が行われるため、追加されます。それはそこにいることを意図しています。検証はどのように行われていると思いますか? JavaScriptを取り除いた場合、検証は機能しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top