Asp.net mvc 当请求总是异步时,如何从操作返回视图
我在MVC中有一个具有以下定义的操作:Asp.net mvc 当请求总是异步时,如何从操作返回视图,asp.net-mvc,Asp.net Mvc,我在MVC中有一个具有以下定义的操作: public ActionResult Create(Club club) { if (ModelState.IsValid) { Club clubFound = db.Clubs.FirstOrDefault(x => x.ClubName == club.ClubName); if (clubFound != null)
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();
}
创建公共行动结果(俱乐部)
{
if(ModelState.IsValid)
{
Club clubFound=db.Clubs.FirstOrDefault(x=>x.ClubName==Club.ClubName);
if(clubFound!=null)
{
ViewBag.CountryID=新选择列表(db.Countries.OrderBy(x=>x.CountryName),“CountryID”,“CountryName”);
AddModelError(“,”数据库中已存在俱乐部。“);
返回视图();
}
其他的
{
db.俱乐部。添加(俱乐部);
db.SaveChanges();
string message=MvcHtmlString.Create(@“俱乐部已成功添加到数据库”).ToString();
//TempData[“成功消息”]=“俱乐部已成功添加。”;
返回Json(消息,JsonRequestBehavior.AllowGet);
}
}
返回视图();
}
如果所有数据都正常,则该方法将成功执行,并且一切正常。但是,当出现模型错误并且操作返回视图时,它实际上会在视图中返回at,因此我在另一个视图中有一个视图。我的问题是,如何像在正常的POST请求中那样正常地返回包含所有错误的视图?来自视图的数据总是来自Ajax表单,因此请求总是异步的 我想您应该返回模型并返回到触发动作的同一视图。当您向模型添加错误时,它必须返回到视图,而且我猜您可能必须向视图添加
@Html.ValidationSummary()
比如:
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(club);
}
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(club);
}
创建公共行动结果(俱乐部)
{
if(ModelState.IsValid)
{
Club clubFound=db.Clubs.FirstOrDefault(x=>x.ClubName==Club.ClubName);
if(clubFound!=null)
{
ViewBag.CountryID=新选择列表(db.Countries.OrderBy(x=>x.CountryName),“CountryID”,“CountryName”);
AddModelError(“,”数据库中已存在俱乐部。“);
返回视图(俱乐部);
}
其他的
{
db.俱乐部。添加(俱乐部);
db.SaveChanges();
string message=MvcHtmlString.Create(@“俱乐部已成功添加到数据库”).ToString();
//TempData[“成功消息”]=“俱乐部已成功添加。”;
返回Json(消息,JsonRequestBehavior.AllowGet);
}
}
返回视图(俱乐部);
}
我尝试在View()函数中添加club对象,但结果是一样的——视图本身中有一个全新的视图。否则,视图中有Html.ValidationSummary()。