1

私はこれに対する答えがあることを願っています...

セットアップ: 非常に複雑な ASP.NET アプリケーションが多数のユーザー インタラクションを実行します。一部のフィールドでは、他のフィールドがクリックされたときに Javascript が一部のフィールドを無効にする必要があります (Javascript で実行する必要があり、ASP.NET のポストバックの問題により不可能になりました。そのため、クライアント側になければなりませんでした)。

このコードは、Javascript が従来の document.getElementById(currObj).disabled = true; を実行する場合に問題ありません。

問題: ページを送信する準備ができたときに、フィールド (テキスト ボックスまたはラジオ ボックス) がクライアント側で無効になっていることを ASP.NET (C#) に通知させるにはどうすればよいですか? これは可能ですか?

よろしくお願いします!

4

2 に答える 2

0

無効なフィールドは送信されませんが、通常のフィールドや非表示のフィールドでさえ送信されます。これは、無効なフィールドがどのように機能するかです。

<input type="text" name="Test_1" value="off" disabled="disabled" />
<input type="text" name="Test_2" value="on" />
<input type="hidden" name="Hidden_1" value="hide_off" disabled="disabled" />
<input type="hidden" name="Hidden_2" value="hide" />

例のみTest_2Hidden_2、他は無効になっているため送信します。

このjsfiddleで動作しているのを見ることができます:http://jsfiddle.net/bJ7Rq

于 2012-10-30T16:43:08.633 に答える
0

コントロールが無効になっていることを ASP.NET が認識する唯一の方法は、コントロールが .NET から無効にされ、Enabled = falseプロパティが ViewState に書き込まれている場合です。クライアント側でフィールドを無効にする場合、これは当てはまらないため、ASP.NET は既定Enabled値を保持します。

以前のコメンターが言及したように、無効なフィールドの値は、ポストバック時にサーバーに送信される POST 本文から完全に除外されます。ページ上のベーシックの場合、それはプロパティが に戻ることをTextBox意味します。有効なフィールドの空の文字列と実際の無効なフィールドを区別するには、オブジェクトを直接見て、キーが存在するかどうかを確認する必要があると思います。たとえば、空白のページに名前を付けた場合、無効なフィールドになります。有効なフィールドの場合、空白の場合も含め、フィールドに含まれる文字列値になります。もちろん、コントロールがネーミング コンテナー (aなど) にある場合は、TextString.EmptyRequest.FormTextBoxmyTextBoxRequest.Form["myTextBox"]nullString.EmptyContentPlaceholdernameプロパティを HTML の実際のフィールドに追加するには、完全な HTML を使用する必要がありますname

たとえば、次のようになります。

bool fieldIsEnabled = Request.Form["myTextBox"] == null;

エレガントではありませんが、仕事を終わらせる必要があります(チェックボックスを除いnullて、ボックスがチェックされていない場合もあります)。

于 2012-10-31T19:45:32.250 に答える