ASP.NET LoginView를 사용하여 링크를 동적으로 표시합니다
문제
필요한 것에 대해 loginview를 사용하는 데 문제가 있습니다. 로그인 뷰 (및 방법) 에서이 작업을 수행 할 수 있는지 또는 코드 베어드를 사용해야하는지 말해 줄 수 있습니까?
관리자와 사용자의 두 가지 역할이 있습니다. 역할에 따라 링크를 동적으로 표시하고 싶습니다. 설명하기가 더 쉽기 때문에 if 문서에서 원하는 것을 작성하겠습니다.
if (role = Administrator) //Display only if administrator.
Show Hyperlink 1
Show Hyperlink 2
else
if (role = User) //Display only if user.
Show Hyperlink 3
Show Hyperlink 4
endif
//Display these if a user or if non-authenticated user...
Show Hyperlink 5
Show Hyperlink 6
Show Hyperlink 7
endif
해결책
사용하는 이와 같은 것을 시도하십시오 RoleGroups
재산. 또한 사용자의 역할 그룹을 지정할 수도 있지만 LoggedIntemplate을 사용하면 역할 그룹에 그룹이없는 모든 사용자에게 영향을 미칩니다. 마지막으로, 사용자/익명으로 설명한 시나리오와 같은 공유 템플릿을 가질 수있는 방법은 없으므로 복제해야 할 수도 있습니다. 또 다른 가능성은 LoginView에 포함시키지 않고 관리자에게도 보여주지 않는다는 것입니다.
<asp:LoginView runat="server" ID="LoginView">
<AnonymousTemplate>
<asp:HyperLink runat="server" ID="Link5" />
<asp:HyperLink runat="server" ID="Link6" />
<asp:HyperLink runat="server" ID="Link7" />
</AnonymousTemplate>
<LoggedInTemplate>
<asp:HyperLink runat="server" ID="Link3" />
<asp:HyperLink runat="server" ID="Link4" />
<asp:HyperLink runat="server" ID="Link5" />
<asp:HyperLink runat="server" ID="Link6" />
<asp:HyperLink runat="server" ID="Link7" />
</LoggedInTemplate>
<RoleGroups>
<asp:RoleGroup Roles="Administrator">
<ContentTemplate>
<asp:HyperLink runat="server" ID="Link1" />
<asp:HyperLink runat="server" ID="Link2" />
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
</asp:LoginView>
다른 팁
ASP.NET LoginView 컨트롤로 원하는 것을 확실히 달성 할 수 있습니다.
당신은 "" "를보고 싶을 것입니다.역할 그룹"LoginView Control의 속성을 사용하면 인증 된 사용자가 속한 역할에 따라 다른 ContentTemplate를 만들 수 있습니다.
예를 들어:
<form id="form1" runat="server">
<asp:LoginView id="LoginView1" runat="server">
<RoleGroups>
<asp:RoleGroup Roles="administrator">
<ContentTemplate>
<ul>
<li>Hyperlink 1</li>
<li>Hyperlink 2</li>
</ul>
</ContentTemplate>
</asp:RoleGroup>
<asp:RoleGroup Roles="user">
<ContentTemplate>
<ul>
<li>Hyperlink 3</li>
<li>Hyperlink 4</li>
</ul>
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
<AnonymousTemplate>
<ul>
<li>Hyperlink 5</li>
<li>Hyperlink 6</li>
</ul>
</AnonymousTemplate>
</asp:LoginView>
</form>
이 메커니즘을 사용하면 ASP 마크 업에서 각 역할에 대한 컨텐츠를 순전히 선언적으로 정의 할 수 있습니다. 또는 항상 서버 측 코드 로이 작업을 수행 한 다음 원하는 기준에 따라 컨트롤 (runat = "Server")을 표시/숨길 수 있습니다. 예를 들어 LoginView 컨트롤의 대안으로 멀티 뷰/뷰 통제 수단.