我有一个视图,在某个操作之后在另一个控制器中调用一个新动作。
当这个新动作加载其信息时,它可能会发现数据不再有效(对抗第三个派对后端)。
在这种情况下,我想拒绝请求并在呼叫页面上保持(即不再重新加载/调用引用动作方法)。
如何实现这一目标?
答案 0 :(得分:0)
你可以在你的控制器动作中写一些东西,比如
if(data not found)
{
return Redirect(Request.UrlReferrer.AbsoluteUri);
}
如果没有网址引用并且您在浏览器的地址栏中输入网址,则会抛出空引用异常
修改强>
在用户名/密码验证的情况下,我们使用一个ActionResult用于HttpGet和一个HttpPost请求
[HttpGet]
public ActionResult Login()
{
LoginViewModel model = new LoginViewModel();
return View(model);//this will render the view for first time
}
[HttpPost]
public ActionResult Login(LoginViewModel model)
{
if(!ValidUser(model))
ModelState.AddModelError("form0", "user name or password incorrect");
if(ModelState.IsValid)
{
return RedirectToAction("Home", "Index");//return to success page if correct
}
return View(model);//if we got here we have errors so render same view with errors
}
在您的视图中,您应该使用
<%:Html.ValidationMessageFor(x=>x.UserName)%> with each field and
<%:Html.ValidationSummary()%> with your form