在做登录页面的时候发现的一些情况:
-------------------------------------------------------------------------
public ActionResult Login(){
return View();
}
public ActionResult Index(){
if(Sesion["userId"]==null){
ModelState.AddModelError("", "超时,请重新登录!");
return View("Login"); //只跳转到login的页面,不执行ActionResult Login()
return Login(); //只跳转到ActionResult Login(),不执行login的页面
return RedirectToAction(""); //跳转到login页面并且执行ActionResult Login(),但ModelState中的值没有了
}
return View();
}
-------------------------------------------------------------------------------------------------------
查了些资料,最后改成这样子,controller和view同时执行,并且ModelState的内容也在:
public ActionResult Login(){
return View("Login"); //注意,这里有区别
}
public ActionResult Index(){
if(Sesion["userId"]==null){
ModelState.AddModelError("", "超时,请重新登录!");
return Login(); //只跳转到ActionResult Login(),不执行login的页面
}
return View();
}
这里涉及到了PRG(Post -> Redirect -> Get)模式