ページにカスタムバリデーターがあるときに、.NETがボタンにJavaScriptをレンダリングするのはなぜですか?
-
27-10-2019 - |
質問
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("Button1", "", true, "", "", false, false))" id="Button1" />
カスタムバリデーターがなければ、それは次のとおりです。
<input type="submit" name="Button1" value="test" id="Button1" />
何か案は?
ありがとう、
アネリー
解決
あなたが何を見るなら System.Web.UI.WebControls.Button
理由がわかりますか:
の GetPostBackOptions()
, 、ページに(現在の検証グループ)にバリーターがある場合、ポストバックのスクリプトが生成されます。
その後 AddAttributesToRender()
, 、スクリプトが存在する場合、それらはオンクリックイベントでレンダリングされます。
これを回避する必要がある場合は、カスタムボタンを作成する必要があります
他のヒント
JavaScriptは、JavaScriptを介してカスタム検証が行われるため、追加されます。それはそこにいることを意図しています。検証はどのように行われていると思いますか? JavaScriptを取り除いた場合、検証は機能しません。
所属していません StackOverflow