むむっ・・・どこに隠されているのだ?MVC Create画面

データの登録画面を作ってみました。

めんどくさいんで、自動で生成されたビューを使いました。

f:id:megusuritan:20171115000142j:plain

コントローラーのほうはこれ(Actionメソッドだけ書きます)

public ActionResult AddCountries()
{
    return View();
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddCountries(Country model)
{
    if (ModelState.IsValid)
    {
        _db.Country.Add(model);
        _db.SaveChanges();
        return View();
    }
    return View(model);
}  

 POSTメソッドのところで、正常に追加できたら、リダイレクトするのではなくて、そのまま画面をクリアして、追加を続けられますように!と願いをこめて書いた部分が、return View();です。

でもね、画面はクリアされず、入力した値がそのまま残っちゃうんですよん。

なんでやねん!どないなっとるねん!

ってことで、デバック画面で正体をみつけました。

 f:id:megusuritan:20171115001714j:plain

ブレークポイントをアクションメソッドのところに設定して、上の画面を表示・入力してCreateボタンを押します。

f:id:megusuritan:20171115002455j:plain

あったよーorz

上の赤枠の部分にその正体がありましたん。

で、SaveChangereturnの間に、ModelState.Clearメソッドを追加。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddCountries(Country model)
{
    if (ModelState.IsValid)
    {
        _db.Country.Add(model);
        _db.SaveChanges();
        ModelState.Clear();
        return View();
    }
    return View(model);
}  

 思った通りに動きましたとさ。おしまい。