16

問題が 1 つあります。

これは短い例です。これはモデルです。

    public class MyModel
    {
         string Title{get;set;}
    }

ビューで私は書く

@Html.TextBoxFor(model => model.Title)

これがコントローラーです。

    public ActionResult EditNews(int id)
    {
        var model = new MyModel;
        MyModel.Title = "SomeTitle"

        return View("News/Edit", model);
    }
    //for post
    [HttpPost]
    public ActionResult EditNews(MyModel model)
    {
        //There is  problem.When I do postback and
        // change Title in this place,Title  doesn't change in view textbox
        //Only when I reload page it change.
        model.Title = "NEWTITLE"

        return View("News/Edit", model);
    }
4

1 に答える 1

32

デフォルトでは(多くの人がこれはバグだと考えています)、同じビューを返すときにモデルに加えた変更をMVCが無視するため、変更されません。HttpPost代わりに、ModelState最初にビューに提供された値を探します。

これを防ぐにはModelState、をクリアする必要があります。これは、の上部で次のように実行できますHttpPost

ModelState.Clear();
于 2013-05-07T12:06:28.990 に答える