假设我的网站有各种不同的网页,每个网页都针对单个用户量身定制,并且只能由该用户访问。当用户访问页面时,该页面的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请求中会使所述操作无法访问信息,而无需通过与原始用户相同的过程,这在我的实现中不是我想要的。