从我的 Masterpage 调用我的 HomeController 中的方法

Posted

技术标签:

【中文标题】从我的 Masterpage 调用我的 HomeController 中的方法【英文标题】:Calling a method in my HomeController from my Masterpage 【发布时间】: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") 我只是不知道如何从母版页调用这样的方法到控制器 见***.com/questions/409213/…或***.com/questions/4610749/… 不完全是我正在寻找的解决方案,但它肯定有一些优势。谢谢 @AronChan 您在寻找什么System.Security.Principal(用户)在视图中可用。那是你附加额外信息的对象吗? 【参考方案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。

以上是关于从我的 Masterpage 调用我的 HomeController 中的方法的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MasterPage 的代码隐藏中访问 TextArea

需要帮助 - 从 WebMethod (ASP.NET) C# 调用时,MasterPage 始终返回 null

如何从 css 获取图像信息到 MasterPage'gridview 中?

尝试在 MasterPage 中查找控件时出现问题

如何从我的 ObservableObject 类调用我的 View 结构中的方法

如何从我的 windows phone 8 应用程序调用 yandex navigator?