То, что я хотел бы сделать, - это возможность передать два атрибута пользовательскому элементу управления, ListName и Permission, например, так:
<uc:check id="uc" List="Shared Documents" Permission="OpenItems" runat="server">
<!-- have some HTML content here that is rendered if the permission is true -->
</uc:check>
Затем в фактической проверке пользовательский элемент управления, имеет что-то похожее на:
<%@ Control language="C#" ClassName="check" %>
<%
// determine permission magic placeholder
if (DoesUserHavePermissions(perm))
{
// render nested HTML content
}
else
{
// abort rendering as to not show nested HTML content
}
%>
Я прочитал страницу на , создав шаблонный элемент управления на MSDN , и хотя это сработало бы - это действительно кажется немногоизлишним за то, что я пытаюсь сделать.Существует ли элемент управления, который уже отображает содержимое на основе логического выражения или более простого примера шаблона?
http://msdn.microsoft.com/en-us/library/36574bf6.aspx
Обновление:
СледующееКод можно использовать в ascx для моделирования очень простой версии этого:
<%@ Control Language="C#" ClassName="PermissionCheck" %>
<%@ Import Namespace="System.ComponentModel" %>
<script runat="server">
void Page_Init()
{
if (Allowed != null)
{
Panel container = new Panel();
Allowed.InstantiateIn(container);
PermissionBasedMessage.Controls.Add(container);
}
}
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate Allowed { get; set; }
</script>
<asp:Placeholder runat="server" ID="PermissionBasedMessage" />
Примечание. Я упростил проверку в методе Page_Init для этого примера кода.При необходимости можно добавить дополнительные логические проверки.
И ссылаться на них на вызывающей HTML-странице:
<%@ Register src="PermissionCheck.ascx" tagname="PermissionCheck" tagprefix="uc1" %>
<uc1:PermissionCheck ID="PermissionCheck1" runat="server">
<Allowed>Allowed Access</Allowed>
</uc1:PermissionCheck>