-
23-08-2019 - |
質問
のaspxファイル内に置かれ、次の.NET 3.5のコードは、(JavaScriptが有効になっているユーザーのための)ページがロードされたJavaScriptエラーがトリガされます。
<noscript>
<asp:TextBox ID="txt" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="txt_RequiredFieldValidator" runat="server"
ControlToValidate="txt"></asp:RequiredFieldValidator>
<asp:Button ID="btn" runat="server" Text="Button" />
</noscript>
ASP.NETの検証コントロールによって生成されたJavaScriptを以下、第2のコード行の前にヌルのチェックが含まれていないため、エラーが発生します:
var ctl00_body_txt_RequiredFieldValidator =
document.all ?
document.all["ctl00_body_txt_RequiredFieldValidator"] :
document.getElementById("ctl00_body_txt_RequiredFieldValidator");
ctl00_body_txt_RequiredFieldValidator.controltovalidate = "ctl00_body_txt";
誰がこの回避策を提案することはできますか?
の脚注:のはなぜ私はこれをやっていますか?私の非JavaScriptのユーザーのために私は検証を必要とする、いくつかの異なるUIコンポーネント、といくつかのAJAX機能を交換しています。
解決
あなたはのRequiredFieldValidatorに以下を追加する必要があります:
enableclientscript="false"
あなたは
。これはあなたのためのサーバー側で(自動的に)発生する検証を強制します。
ちょうどあなたが呼び出すことを確認し、「ページあなたが応答を処理する前に、「の.IsValidます。
他のヒント
Javascriptをnoscript要素に含まれる要素を探していますか?私の知る限り、サーバ側からのスクリプトのサポートを検出するために何のきれいな方法はありません。
私はあなたが「上turnscriptしてくださいにnoscript要素のユーザーをプッシュする(あなたは、検証の失敗を気にしない場合、私は、これはnoscript要素ヘッダー内のメタリフレッシュで行わ見てきました)、リダイレクトに構築する必要がありますだと思いますページ」またはホイール改革のいくつかの量がかかる場合がありバインディングの検証/制御をほぐすために、いくつかの手術を行います。これは、コントローラとビューの間でasp.netの密結合が本当に罰するこれらの分野の一つです。
所属していません StackOverflow