隐藏从Controller到View的URL参数:MVC 5

时间:2015-09-02 22:56:11

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

假设我的网站有各种不同的网页,每个网页都针对单个用户量身定制,并且只能由该用户访问。当用户访问页面时,该页面的URL将为UserStuff/Pages/11,其中11是页面的ID。现在,因为用户可以拥有多个页面,所以我使用ActionLink元素将用户定向到他们选择的页面,如下所示:

// In Index.cshtml
// ...
@Html.ActionLink("View Page", "Pages", new { id = page.ID }, new { @class=...})

控制器拦截给定的id:

public ActionResult Pages(int id) 
{
    // ...
    Page page = db.Pages.Find(id);
    return View(page);
}

这很好用,并提供了我希望应用程序的行为方式。但是,我希望ID隐藏在URL中。如何通过参数将信息从View传递到控制器而不将其暴露在URL中?假设我不想在URL中看到Page的ID,我如何链接到采用给定参数的不同Action?

我认为,将请求保留为GET请求非常重要,因为其他操作会重定向到生成的页面。将其包装在表单/ POST请求中会使所述操作无法访问信息,而无需通过与原始用户相同的过程,这在我的实现中不是我想要的。

0 个答案:

没有答案