使ActionLink成为特定用户

时间:2012-02-19 20:39:08

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

如何使网站上的链接指向当前用户的页面?我不希望他们获得每个用户的列表,只有他们自己。我正在为我的菜单链接考虑这样的事情:

  • @ Html.ActionLink(“我的详细信息”,“详细信息”,“客户”,Membership.GetUser()。ProviderUserKey)
  • 2 个答案:

    答案 0 :(得分:3)

    我认为最好将用户发送到“我的详细信息”页面,没有任何参数或路由值

    该页面将显示当前用户数据。那么为什么要这样传递呢?

    只需将用户重定向到“我的详细信息”页面,然后当用户在该页面时,您可以使用以下方式获取当前用户:HttpContext.CurrentUser。< / p>

    不要将用户数据放在路由值中。 而是可以在该页面的控制器中获取它并将其传递给页面。

    答案 1 :(得分:1)

    如果您希望显示“链接”以显示经过身份验证的用户查看页面的时间,请创建一个返回所需数据的ChildAction:

        [Authorize]
        [ChildActionOnly]
        public ActionResult UserLinks() {
            var items = someRepository.GetLinks(User.Identity.Name);
            return PartialView(items,"SomePartialView");
        }
    

    然后,在视图中使用RenderAction,如下所示:

    @{ Html.RenderAction("UserLinks");}
    

    其次,我同意“Afshin Gh”的评论。您可以在Controller中对数据进行编码,而不是在“ActionLink(s)”中传递数据,以便根据需要过滤数据 - 就像我在上面的“UserLinks”方法中显示的那样。这样,有人不能只操纵Url来显示另一个客户的数据。