2009-02-26 16 views
1

選択(ドロップダウンメニュー)に基づいてカスタムのASPコントロールがあります。 htmlに "disabled"という単語を追加してコントロールを無効にすると、フォームデータを処理するときにNULLポインタエラーが発生します。.NETコントロールを無効にするとポストバックできない

私は、フォームデータを処理するときにブラウザが無効なフォームアイテムをポストバックしないか、ASP.NETがフォームアイテムを無視することを示しています。私はそれがどちらか分かりません。私はどこでデータが失われているのか理解しようとしています。

ありがとうございました。

PS。私は手動でhtmlを編集するよりも、コントロールを作成して無効にするより良い方法があることを認識していますが、ここでは私がそうでないことを許さないコンテキストがあります。

答えて

5

はい設定コントロールの[有効] = [偽]は、コントロールの値を投稿データ収集に追加できないようにします。

代わりにreadonly attributeを使用できます。

ここMSDNで、それは言う:真 に設定ReadOnlyプロパティでのTextBoxコントロール の

テキスト値はポストバック が発生したときにサーバーに送信されますが、サーバーには 処理を行いません読み取り専用のテキストボックスです。 これにより、 の読み取り専用のテキスト値を の悪意のあるユーザーが変更しないようにします。 Text プロパティの値は、 がサーバー側のコードで変更されていない限り、 状態のポストバックの状態で保持されます。

また、トピックに関連するバグレポートにはMicrosoft's replyがあります。

が、それは動作しますそのように、あなたは、古典的な方法で使用している場合:

txt2.Attributes.Add("readonly", "readonly"); 
+0

これは選択ボックスでは機能しません。ドロップダウンはグレー表示されていますが、値を変更することはできます。 参照:http://www.htmlcodetutorial.com/forms/_SELECT_READONLY.html –

+0

読み取り専用のトリックは機能しませんが、私の質問に答えました。私はnull値を処理します。ありがとう –

+0

私はそれがなぜ働かないのかを説明するリソースを見つけて、テストされたテキストボックス用のコードを追加しましたが、私はドロップダウンについてはわかりません。 – Canavar

0

それが戻っ投稿からコントロールを防ぐが、このウェブパラダイムは、クライアント/サーバ技術であることを覚えているだろう。人はクライアントデータ(HTMLおよび/またはJavascript)を変更して、送信する内容に関係なくポストバックを強制することができます。

したがって、お金の操作などのセキュリティに敏感な操作にはこれを依存しないでください。

機密性の高い操作については、必ずサーバー側のチェックを行ってください。

+0

はい、私はデータレイヤーにも物事を適用します。念押し有難う。 –

関連する問題