主にデータベース内のエントリを表示するという 2 つの目的を果たすページがありますが、いくつかの値を編集し、下部で選択したボタンに応じてそれらを更新できるため、一部のフィールドはテキストフィールド/テキストエリアに表示されます。エントリ。私が特に気に入っているのは、そのルック アンド フィールであり、ページ内で自然にサイズ変更でき、SelectAll などの標準的な右クリック オプションが付属していることです。thx はブラウザーのサポートです。
とにかく、それらのフィールドの 1 つ (テキストエリアに表示されます) は、その値が編集されないため、ポストバック時に通過しないようにしたいと思います (@readonly にしたので、編集することさえできません)。テキストエリア)。
ASPX ページからの入力に対するフォーム ポストバックを防止するにはどうすればよいですか? 一般的に直感に反することはわかっていますが、隠し入力に似た方法があるのではないかと思いました。また、コントローラーでは、フォームから送信されたモデルで何かを行う前に、モデルのそのフィールドを消去するだけでよいことを知っていますが、ページからできるオプションがあるかどうか知りたいです。
この構文を使用して、テキストエリアを定義しています。
<%: Html.TextAreaFor(model => model.Key, new { @readonly = "readonly", @class = "readonly", cols = 62, rows = 15 })%>
編集:
これを行う必要がある主な理由の1つは、モデルフィールドの1つにHTMLが含まれている可能性があるためです。これは内部 Web サイトであり、そのフィールドは手動で編集できないため、HTML を入力することはできません。これは、ライセンス生成プログラムから得られるデータベース内の値にすぎません。そのため、モデル フィールドにバインドされたフォームで TextArea を使用すると、ASP.NET は TextArea データをモデルにバインドしてポストバック時に送信するときに例外をスローします。
[AllowHtml] および [ValidateInput(false)] 属性を使用して SO の回答を見ました。1 つは MVC2 では利用できず、もう 1 つは requestValidationMode をダウングレードする必要があるため、可能な HTML 値がまったくポストバックされています(ただし、テキストエリアにはまだ表示されています)。