質問

の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ます。

BaseValidator.EnableClientScript <参照してください。 / A>詳細についてます。

他のヒント

Javascriptをnoscript要素に含まれる要素を探していますか?私の知る限り、サーバ側からのスクリプトのサポートを検出するために何のきれいな方法はありません。

私はあなたが「上turnscriptしてくださいにnoscript要素のユーザーをプッシュする(あなたは、検証の失敗を気にしない場合、私は、これはnoscript要素ヘッダー内のメタリフレッシュで行わ見てきました)、リダイレクトに構築する必要がありますだと思いますページ」またはホイール改革のいくつかの量がかかる場合がありバインディングの検証/制御をほぐすために、いくつかの手術を行います。これは、コントローラとビューの間でasp.netの密結合が本当に罰するこれらの分野の一つです。

scroll top