我想使用一个控件,它将包含指向其他页面的链接,并将所有这些链接放在一个控件(EG表)中,这样我就可以用代码隐藏它(仅为管理员显示)
除了我应该使用哪种控制的表格?我应该使用面板还是别的什么?
答案 0 :(得分:2)
如果要隐藏某些链接,请使用简单的超链接控件,并仅为管理员设置可见属性。您可以使用Repeater控件来渲染表,并在ItemTemplate中设置Hyperlink。
否则你可以在其中使用占位符和放置表,并设置占位符的可见属性,Placehodler不会渲染任何内容。
毕竟你可以使用同一个表,添加ID和runat =“server”属性,并从后面的代码中设置可见。
例如:
<table ID="myTable" runat="server">
...
然后在代码中隐藏整个表:
protected void Page_Load(object sender, EventArgs e)
{
myTable.Visible = false;
}
答案 1 :(得分:0)
我会使用<asp:PlaceHolder
,因为它只是一个占位符..并且没有其他semnatic值,如表格,面板或这些东西..
答案 2 :(得分:0)
取决于您的目标,正如Antonio Bakula所说,您可以通过并将每个链接设置为不可见。
或者如果它们中有很多,请将它们放在可以批量打开和关闭的面板中。
答案 3 :(得分:0)
面板是个不错的选择。
<asp:Panel />
在HTML中呈现为<div>
。如果您不熟悉HTML,<div>
只是一个框,您可以将任何内容(包括<table>
)放入其中。例如,StackOverflow上的每个答案都显示在<div>
。
如果您设置Visible="false"
,那么整个<div>
将从您的HTML输出中删除,即使它存在于.aspx
页面上。基本上,您可以使用此方法非常有效地隐藏非管理员的链接。
然而,这仍然不太安全。恶意用户通过猜测来尝试查找管理员链接是很常见的(例如:/admin/default.aspx
,/admin/admin.aspx
等等。)。您应该使用roles来阻止用户访问您的管理员链接。角色会阻止某些类型的用户(例如:未登录的用户或非管理员用户)访问这些页面。不会看到该页面,而是会向用户显示错误消息。
答案 4 :(得分:0)
您可以使用panel
在其中插入所有其他控件(超链接,按钮等)
在您的代码中,您可以通过调用
panel.visible=true
panel.visible=false