阻止用户访问代码可访问的操作



我使用最新的MVC,带有属性路由。

当用户提交联系人表单时,它会重定向到"感谢您提交信息"视图,路径为foo.com/success

我如何配置它,使我的代码可以像往常一样重定向到success操作,但用户不能直接导航到它?

若页面中并没有链接,用户将不会直接访问它
否则,如果用户无法访问它,您也无法通过代码访问它。

[HttpGet]
public ActionResult MyAction(){
   //...
   return RedirectToAction("Success");
}
[HttpGet]
public ActionResult Success(){
   ViewBag.Result = "thank you for submitting your info";
   return View();
}

如果你想阻止用户使用url访问操作,你的操作不能有[HttpGet],或者你必须在你的操作上设置AuthorizeAttribute。为此,使用ajax请求调用你的操作,并用Json 将你的成功消息发送给客户端

    //Client Side
$.ajax({
    type: "POST",
    url: 'Action URL',
    contentType: "application/json; charset=utf-8",
    data: {id :1},
    dataType: "json",
    success: function(result) {
    alert(result.message);        
    }
    });

[HttpPost]
public ActionResult MyAction(string id){
   return Json(new {message="Your Message"});
}

最新更新