拒绝请求并保留在引用页面上

时间:2011-04-25 18:17:52

标签: asp.net-mvc asp.net-mvc-3

我有一个视图,在某个操作之后在另一个控制器中调用一个新动作。
当这个新动作加载其信息时,它可能会发现数据不再有效(对抗第三个派对后端)。
在这种情况下,我想拒绝请求并在呼叫页面上保持(即不再重新加载/调用引用动作方法)。

如何实现这一目标?

1 个答案:

答案 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