2009-05-07 16 views
18

私はテキストボックスを読み取り専用に設定しました。ユーザーがそれをクリックすると、カレンダーが表示され、ユーザーは、読み取り専用のテキストボックスに入力する日付を選択します。読み取り専用のテキストボックスでASP.NETのデータが返されないのはなぜですか?

しかし、データベースにデータを入力しようとすると、null値が表示されます。なにが問題ですか?

答えて

49

HTML入力要素のReadonlyプロパティとreadonly属性については、少しばかり違っています。むしろWebコントロールのReadonlyプロパティを設定するよりも、単純に次のように制御するHTML属性を追加してみてください:

textBox.Attributes.Add("readonly", "readonly"); 

これはまだ、まだあなたがの値を取得することができ、読み取り専用クライアントのブラウザで制御を行いますが入力がサーバーにポストバックされるときの入力。

+2

信じられないほどです!私はこの問題の周りに今夜2時間を失いました。 – markzzz

+0

まだ動作していませんでした。簡単な間違い:ブラウザのキャッシュをクリアして新しいコードをリロードする必要がありました –

+0

素晴らしい!完璧に動作します! – Haris

2

システムでは、読み取り専用または無効化されたコントロールはクライアント側で変更されないため、変更された値をサーバーに戻すことはありません。サーバー側のバージョンではなく、クライアント側の読み取り専用プロパティーを設定する必要があります。

+0

Andrew HareとTom Clarksonありがとうございました – input

+1

メモと同様に実際には値はユーザーブラウザによってサーバーに送信されますが、デシリアライズされません。 – Botis

1

ASP.NETが読み取り専用とWebBrowserコントロールのEnabled =「false」のプロパティが変更されないことを前提としていたリンクをチェックしてください。したがって、上記のtomで述べた値をポストバックしません。この回避策を使用することができます。これをHTMLに追加すると、Readonlyのプロパティや無効なコントロールについて心配する必要はありません。

onkeydown="return false;"