从我的 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 中?