2014-10-08 62 views
0

我使用最新的MVC,並使用屬性路由。防止用戶訪問可通過代碼訪問的動作

當用戶提交聯繫表單時,它會重定向到「謝謝您提交信息」視圖,路線爲foo.com/success

如何配置它以便我的代碼可以像往常一樣重定向到success操作,但用戶無法直接導航到它?

回答

1

如果您在頁面中沒有鏈接,用戶將無法直接訪問它。
否則,如果用戶無法訪問它,則無法通過代碼訪問它。

[HttpGet] 
public ActionResult MyAction(){ 
    //... 
    return RedirectToAction("Success"); 
} 

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

「如果用戶無法訪問它,你不能通過代碼訪問它」 - 是這就是我害怕...不是我想要做的,但我想答案是,「無法完成」。所以你的答案是最接近我需要的。 – 2014-10-08 13:49:25

1

如果你想阻止用戶使用URL來訪問你的行動行動絕不能有[HTTPGET]或者必須設置AuthorizeAttribute您action.for這種使用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"}); 
}