[解決済み] ASP.Net MVC Html.HiddenForに間違った値が設定された場合
2022-06-12 05:59:12
質問
私はプロジェクトでMVC 3を使用していますが、非常に奇妙な動作を目にします。
モデル上の特定の値のために隠しフィールドを作成しようとしています。問題は、何らかの理由でフィールドに設定された値がモデル内の値に対応しないことです。
例
テストとして、こんなコードもあります。
<%:Html.Hidden("Step2", Model.Step) %>
<%:Html.HiddenFor(m => m.Step) %>
私は、両方の隠しフィールドが同じ値を持っていると思います。 私が行うことは、最初にビューを表示するときに値を1に設定し、投稿後にモデルフィールドの値を1増加させることです。
つまり、最初にページをレンダリングしたときは両方のコントロールに値1がありますが、2回目にレンダリングされる値はこれです。
<input id="Step2" name="Step2" type="hidden" value="2" />
<input id="Step" name="Step" type="hidden" value="1" />
ご覧の通り、1つ目の値は正しいのですが、2つ目の値は最初にViewを表示したときと同じになっているようです。
私は何を見逃しているのでしょうか?For Html ヘルパーは何らかの方法で値をキャッシュしているのでしょうか。もしそうなら、どのようにこのキャッシュを無効にすることができますか?
ご助力ありがとうございます。
どのように解決するのですか?
それは正常であり、HTMLヘルパーがどのように動作するかです。まずPOSTリクエストの値を使用し、その後にモデルの値を使用します。つまり、コントローラアクションでモデルの値を変更しても、POSTリクエストに同じ変数があれば、変更は無視され、POSTされた値が使用されるのです。
一つの可能な回避策は、値を変更しようとするコントローラアクションのモデル状態からこの値を削除することです。
// remove the Step variable from the model state
// if you want the changes in the model to be
// taken into account
ModelState.Remove("Step");
model.Step = 2;
もう一つの可能性は、常にモデルの値を使用し、POST値を無視するカスタムHTMLヘルパーを書くことです。
さらに別の可能性として
<input type="hidden" name="Step" value="<%: Model.Step %>" />
関連
-
[解決済み] クライアントから危険な可能性のあるRequest.Formの値が検出された
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] ASP.Net MVCのmodelStateからすべてのエラーを取得する方法は?
-
[解決済み】TextBoxFor()からは日付のみ。)
-
[解決済み】"JSONリクエストが大きすぎてデシリアライズできませんでした "の表示について
-
[解決済み】フォームのhiddenフィールドにjQueryの".val() "を使って値を設定してもうまくいかない。
-
[解決済み】ASP.NET MVC 3 - 部分テンプレートと表示テンプレートと編集テンプレート
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] MVCにおけるViewModelとは?
-
[解決済み】Html.ActionLinkが"?Length=4 "とレンダリングされるのはなぜか?
-
[解決済み】cshtmlテンプレートで関数を作成する方法は?
-
[解決済み] asp.net mvc: なぜ Html.CheckBox は追加の隠された入力を生成するのですか?
-
[解決済み] X-SourceFilesヘッダーは何をするものですか?
-
[解決済み] MVCとRazorにおけるHtml.TextboxForとHtml.EditorForの相違点
-
[解決済み] ASP.NET MVCのモデルでUrlHelperを呼び出す
-
[解決済み] エリア間のRedirectToAction?
-
[解決済み] ASP.NET MVCとIIS7で生のHTTPリクエスト/レスポンスをログに記録する