根据用户的角色显示html元素

时间:2016-04-12 21:56:38

标签: c# asp.net web

我试图隐藏普通用户的html元素,以便只有用户。 我有简单的asp.net Web表单设置,它使用角色提供程序和成员资格。

<li runat="server" id="li1" visible ='<%# HttpContext.Current.User.IsInRole("admin") %>'><a href="screeners.aspx"><span> Admin link</span></a></li>

我也在尝试这个没有成功:

<li runat="server" id="liAdminUsers" visible ='<%# isAdmin %>'><a  href="screeners.aspx"><span> The Hopper</span></a></li>

背后的代码是:

public bool isAdmin =false;
            protected void Page_Load(object sender, EventArgs e)
            {

                isAdmin = Page.User.IsInRole("admin");
                       }

更新我知道我可以通过添加后面的代码来实现它:

liAdminUsers.Visible = false ;

但想要.aspx代码中的UI解决方案

7 个答案:

答案 0 :(得分:2)

您正在使用data-binding syntax <%# ... %>,因此您需要致电Page.DataBind()

您通常在Page_Load方法中调用DataBind()。

答案 1 :(得分:0)

我曾经使用自定义XML文件做了类似的事情,该文件的属性指示是否为特定应用程序链接应用了角色 - 如果是,则另一个属性包含角色名称。然后,代码隐藏将使用登录的用户网络标识检查自定义成员资格存储以进行授权检查。

答案 2 :(得分:0)

在代码后面编写一个静态方法来测试角色

install

在html中调用此方法,如

public static bool IsAdmin(){
   //chech and return true or false
}

通过这种方式,您可以像任何其他方法一样控制逻辑。

或者您可以在

后面的代码中直接设置元素visible false
<li runat="server" id="liAdminUsers" visible ='<%# isAdmin() %>'>.....</li>

答案 3 :(得分:0)

我建议你制定一个隐藏所述元素的类。

CSS

hide-elements {
  display:none;
}

show-elements {
 display:block;
}

C#CodeBehind

public string isAdmin()
{
   if (condition == false)
   return "hidden-elements";
   else
   return "show-elements";
}

HTML代码

<li runat="server" id="liAdminUsers" class='<%# isAdmin() %>'>.....</li>

希望这有帮助。 :D(我的第一篇文章)

答案 4 :(得分:0)

如果从后面的代码到达变量,则需要使用&lt;%= isAdmin%&gt; ,而不是&lt;%#isAdmin()%&gt;

答案 5 :(得分:0)

我之前遇到过类似的问题,我通过在.aspx.cs文件中声明一个受保护的变量并直接在aspx页面中使用它来解决它。

Aspx Page:

protected bool IsAdmin = false; 

Aspx.cs文件:

http://example.com/#section0

请尝试这个并告诉我任何问题。

谢谢你, 索马。

答案 6 :(得分:-1)

在aspx文件中,您可以尝试:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

如果isAdmin重新运行真正的asp,则在您的页面(您的html代码和服务器控件)中编写您的代码。