2011-12-26 22 views
1

私たちのプロジェクトでは、私の考えではなくASP.netのサーバー側コントロールを使用しています。
これらのコントロールの一部を無効にするクライアント側のコードがあります。
は、しかし、私は無効になっているリストボックスのSelectedValue取得できませんよ:ASP.netサーバー側ListBoxコントロール - コントロールが無効なときに値を取得します。

ListboxA場合は、その後、ポストバックで、クライアント側で無効になっているが、ListboxA.SelectedValueは(選択した値がであっても)空であります。リストボックスが無効でない場合、選択した値が正しく返されます。
私は単純にポストバックの前にすべてのコントロールを有効にすることで、これを回避する方法を見つけましたが、それはちょっとばかげています。誰かがより良いアイデアを得ましたか?

PS:シナリオ例:ユーザーが「ユーザータイプ」リストボックスに「管理者」を選択した場合、「権限」リストボックスには、値「すべて」のセットを持っており、その管理者のみが作成することができるので、無効になりましたすべての権限で。

+2

回避策はあまりにも愚かではありません。それ以外のオプションは、クライアントサイドスクリプトを使用して値を読み取り、隠しフォーム要素に割り当てるか、ドロップダウンを無効にするのではなく、同じことを模倣する独自のスクリプトを持つことです。無効なフォーム要素は値を送信しません。これは変更できません。 –

答えて

1

コントロールを無効にすると、クライアントは値をサーバーにポストしないので、そのように値を取得することはできません。これは、不要なコントロールのデータをクライアントが送信するよりも優れているため、回避策は「愚か」ではありません。

  1. だけポストバックの前にコントロールを再有効化:

    しかし、あなたは(おそらくより)2つの回避策があります。

  2. 値を非表示フィールドに保存します。
関連する問題