5

私はこのようなことをしたいです:

[HttpPost]
public ActionResult Index(Foo foo)
{
    foo.Name = "modified";

    return View(foo);
}

しかし、私のビューがレンダリングされるとき、それは常に古い値を持っています!どうすれば変更して返却できますか?毎回ModelStateをクリアする必要がありますか?


私の見解:

@model MvcApplication1.Models.Foo


@using (Html.BeginForm())
{
    @Html.TextBoxFor(m => m.Name)
    @Html.TextBoxFor(m => m.Description)

    <input type="submit" value="Send" />
}
4

2 に答える 2

4

同じモデルをビューに送り返す「通常の」シナリオは、モデルにエラーがある場合であるため、これは予想される動作であると思います。

参照: http: //blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

于 2012-06-06T19:35:09.663 に答える
1

MVCは、渡されたモデルではなく、ポストバックでModelStateを使用してビューにデータを入力します。ビューに戻る前に単一のフィールドを更新するには、次のようにしてみてください。

var newVal = new ValueProviderResult("updated value", "updated value", CultureInfo.InvariantCulture);
ModelState.SetModelValue("MyFieldName", newVal);

詳細はこちら:ModelStateDictionary.SetModelValue()

于 2019-08-15T23:31:09.427 に答える