根据角色显示/隐藏广告

Display / Hide Advert Based on Role

我创建了一个 Web 控件,它基本上是一个 div 用于放置移动横幅,但如果用户是管理员,我希望隐藏它

我试过:

<mob:MobileBanner runat="server" ID="MobileBanner" Visible='<%# Not HttpContext.Current.User.IsInRole("Admin") %>' />

但是好像不行。

我也在考虑围绕 html 但似乎无法让它工作,所以它会检查你是否是管理员,如果不是,它会向客户端写入广告代码,其中包括 css link.

有一个类似的问题 (how to enable and disable button based on user role?),但那是一个 ASP.NET 服务器端按钮,而不是仅包含 html.

的基本 Web 控件

如果您需要代码,请将新的 Web 控件添加到项目中,然后粘贴此代码。

<link href = "my_css_file_here.css" rel="stylesheet" type="text/css" />

<div Class="my_banner_container">
    <!--My banner code goes here -->
</div>

我知道我可以使用 runat="server" 在主文档中创建一个容器,然后使用:

my_container.Visible = Not HttpContext.Current.User.IsInRole("Admin")

但我还需要更改 padding-top: 130px;到填充顶部:50px;如果管理员注销或用户不是管理员,则换回。

我知道是否可以为非管理员提供这样的 link:

<link href = "my_css_file_130_here.css" rel="stylesheet" type="text/css" runat="server" />

然后将成为管理员:

<link href = "my_css_file_50_here.css" rel="stylesheet" type="text/css" runat="server" />

然后后面的代码有 2 个不同的 css 用于 padding-top 并根据用户是否是管理员更改 href

body {
     padding-top: 130px;
}

body {
     padding-top: 50px;
}

关于如何实现这个或比我的复杂想法更好的方法有什么想法吗?

不需要就不要渲染。如果用户不在 Admin 角色中,下面只会呈现它。

<%If Not HttpContext.Current.User.IsInRole("Admin")
Then
    <mob:MobileBanner runat="server" ID="MobileBanner" />
End If %>

我最后所做的是为样式表添加 link 并使其运行在="server" 并将 href 设置为 120px padding

在主文档的form_load(回发检查之外,所以总是检查):

If HttpContext.Current.User.IsInRole("Admin") Then
    my_container.Visible = False
    my_stylesheet.Href = "~/path_to_file50.css"
Else
    my_container.Visible = True
    my_stylesheet.Href = "~/path_to_file120.css"
End If

在那些 css 文件中,我设置了

padding-top: 50px;

padding-top: 120px;

然后将 css 的其余部分留在另一个文件中,现在似乎一切正常,通过设置:

my_container.Visible = False

应该停止 Google 抱怨我在自己的网站上创造印象。