MVC で次の定義を持つアクションがあります。
public ActionResult Create(Club club)
{
if (ModelState.IsValid)
{
Club clubFound = db.Clubs.FirstOrDefault(x => x.ClubName == club.ClubName);
if (clubFound != null)
{
ViewBag.CountryID = new SelectList(db.Countries.OrderBy(x => x.CountryName), "CountryID", "CountryName");
ModelState.AddModelError("", "The club already exists in the database.");
return View();
}
else
{
db.Clubs.Add(club);
db.SaveChanges();
string message = MvcHtmlString.Create(@"Club added to the db successfully. <a href=""/"">Go back to home page.</a>").ToString();
//TempData["SuccessMessage"] = "Club successfully added.";
return Json(message, JsonRequestBehavior.AllowGet);
}
}
return View();
}
すべてのデータに問題がなければ、メソッドは正常に実行され、すべて問題ありません。しかし、モデル エラーが発生し、アクションが View を返すと、実際にはビュー内で返されるため、あるビューが別のビューに表示されます。私の質問は、通常の POST リクエストのように、すべてのエラーを含むビューを通常返す方法です。ビューからのデータは常に Ajax フォームからのものであるため、リクエストは常に非同期です。