Asp.net 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)

我在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();           
    }
创建公共行动结果(俱乐部)
{       
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()。