【问题标题】:Calling a method in my HomeController from my Masterpage从我的 Masterpage 调用我的 HomeController 中的方法
【发布时间】:2012-04-24 02:38:43
【问题描述】:

我试图对没有管理员权限的用户隐藏我的母版页上的一些管理员特定按钮。

到目前为止,我的代码如下所示:

<% if (Request.IsAuthenticated)
    {%>
        <%: Html.ActionLink("Administrer", "Index", "User", new { Area = "Users" }, new { @class = "menubutton", @id = "settingsbutton" })%>
      <%} else { }%>

如果当前用户是管理员,现在我想检查 IF() 语句。我使用 ASP.NET 会员系统,并为每个用户附加了一个特殊类,其中包含一些额外信息,包括有关他是否是管理员的信息(布尔)。

我的问题是如何调用一个方法来检查这个或类似的东西?

【问题讨论】:

  • 我在想它会像 if (Request.IsAuthenticated && "Method that checks for adminrights")
  • 我只是不知道如何从母版页调用这样的方法到控制器
  • 不完全是我正在寻找的解决方案,但它肯定有一些优势。谢谢
  • @AronChan 您在寻找什么System.Security.Principal(用户)在视图中可用。那是你附加额外信息的对象吗?

标签: c# asp.net asp.net-mvc-3 master-pages


【解决方案1】:
<% if (Request.IsAuthenticated && User.IsInRole("Administrator"))
    {%>
        <%: Html.ActionLink("Administrer", "Index", "User", new { Area = "Users" }, new { @class = "menubutton", @id = "settingsbutton" })%>
      <%} else { }%>

如果您使用 ASP.NET Membership Provider 和 ASP.NET Role Provider 将您的用户链接到他们的角色,您只需在视图的 IPrincipal User 对象上调用 IsInRole(string) 方法。

【讨论】:

  • 看来我没有 IPrincipal User 对象。我到底该怎么做?
  • 我设法通过使用访问我的用户: HttpContext.Current.User.IsInRole("administrator") 这是否和您的示例一样好,或者您这样做是否有特定原因?
  • HttpContext.Current.User.IsInRole("administrator") 很好。可能只有MVC3或者Razor视图引擎在视图页面默认提供@User。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多