Asp.net 我可以加载';角色';an的属性<;asp:角色组合>;以编程方式?

Asp.net 我可以加载';角色';an的属性<;asp:角色组合>;以编程方式?,asp.net,security,webforms,roles,Asp.net,Security,Webforms,Roles,我正在维护一个ASP.NET应用程序,现在在整个站点的各个位置都定义了安全性。代码中有一些逻辑,比如if User.IsInRole(…),还有其他逻辑散布在整个ASPX页面中,比如: <asp:LoginView ID="lvDoSomeStuff" runat="server"> <RoleGroups> <asp:RoleGroup Roles="Accounting,HR,Blah"> ... </

我正在维护一个ASP.NET应用程序,现在在整个站点的各个位置都定义了安全性。代码中有一些逻辑,比如
if User.IsInRole(…)
,还有其他逻辑散布在整个ASPX页面中,比如:

<asp:LoginView ID="lvDoSomeStuff" runat="server">
    <RoleGroups>
        <asp:RoleGroup Roles="Accounting,HR,Blah">
        ...
    </RoleGroups>
</asp:LoginView>
其中
GetRolesThatCanDoX()
返回以逗号分隔的角色名列表,但我的方法似乎从未被调用

是否可以在ASP.NET WebForms中执行类似操作?请帮我分离代码!;-)

解决方案:工作正常。我的执行情况如下:

ASPX:

<asp:LoginView ID="lvDoSomeStuff" runat="server">
    <RoleGroups>
        <asp:RoleGroup>
        ...
        </asp:RoleGroup>
    </RoleGroups>
</asp:LoginView>
protected void Page_Load(object sender, EventArgs e)
{
    // Load rolegroups from UserManager
    lvDoSomeStuff.RoleGroups[0].Roles = UserManager.GetRolesThatCanDoStuff().ToArray();
    lvDoSomeOtherStuff.RoleGroups[0].Roles = UserManager.GetRolesThatCanDoOtherStuff().ToArray();
}

你试过这样的东西吗

代码:

设计师:

<asp:LoginView id="LoginView1" runat="server">
     <AnonymousTemplate>
         You are not logged in.<br />
         <asp:LoginStatus id="LoginStatus1" runat="server"></asp:LoginStatus>
     </AnonymousTemplate>
     <LoggedInTemplate>
          You are logged in as
          <asp:LoginName id="LoginName1" runat="server" />. This message is not from the template.<br />
          <asp:LoginStatus id="Loginstatus2" runat="server"></asp:LoginStatus>
     </LoggedInTemplate>
</asp:LoginView>

您尚未登录。
您是以用户身份登录的 . 此消息不是来自模板。

这项工作完美无瑕!哇,好吧,我甚至没有尝试从代码隐藏设置“角色”属性。我想在ASPX页面上做会更容易。坏主意;-)
protected void Page_Load(Object sender, EventArgs e)
{
    RoleGroup rg = new RoleGroup();
    rg.ContentTemplate = new CustomTemplate();
    String[] RoleList = {"users"};
    rg.Roles = RoleList;
    RoleGroupCollection rgc = LoginView1.RoleGroups;
    rgc.Add(rg);

}
<asp:LoginView id="LoginView1" runat="server">
     <AnonymousTemplate>
         You are not logged in.<br />
         <asp:LoginStatus id="LoginStatus1" runat="server"></asp:LoginStatus>
     </AnonymousTemplate>
     <LoggedInTemplate>
          You are logged in as
          <asp:LoginName id="LoginName1" runat="server" />. This message is not from the template.<br />
          <asp:LoginStatus id="Loginstatus2" runat="server"></asp:LoginStatus>
     </LoggedInTemplate>
</asp:LoginView>