0

StartDate と EndDate を表示するビューと、2 つの日付間の日数を示す読み取り専用フィールドがあります。これらのフィールドはすべて、カミソリ ビュー定義の標準の @Html.EditorFor() メソッドを使用してモデルにバインドされています。日付の 1 つを変更して [保存] をクリックすると、

[HttpPost]
ViewResult Edit([modeltype] editedModel){
 ... }

メソッドは、新しい日付と計算された値をデータベースに保存する前に、計算フィールドの新しい値を計算して設定し、更新されたモデルでビューを返します。私が抱えている問題は、ビューに新しい計算値が表示されないことです (代わりに、最初のページ読み込みごとに元の計算値が表示されます)。そのビューから離れて戻るまで、計算された値が正しく表示されます。私が見逃しているものはありますか?私の HttpPost の後に、ブラウザーはページのキャッシュされたバージョンを表示している可能性がありますか? もしそうなら、その動作を無効にすることはできますか?

4

1 に答える 1

1

HtmlヘルパーはModelStateCollection、実際よりも優先しModelます。これは、コントローラーで更新した値ではなく、投稿された値が表示されることを意味します。

したがって、アクションで取得したものと同じモデルを返したい場合で、モデルをModelState返す前にクリアする必要のある値の一部を変更した場合は、次のようになります。

[HttpPost]
public ViewResult Edit(MyModel editedModel)
{

   //set some properties on editedModel

   ModelState.Clear();
   return View(editedModel);
}
于 2012-05-23T18:19:54.503 に答える