0

我想使用一个包含指向其他页面的链接的控件,并将所有这些链接放在一个控件(EG 表)中,这样我就可以用代码隐藏它(仅对管理员显示)

除了表格,我应该使用哪个控件?我应该使用面板还是其他东西?

4

5 回答 5

2

如果要隐藏某些链接,请使用简单的超链接控件并仅为管理员设置可见属性。您可以使用Repeater控件来呈现表格并在ItemTemplate中设置超链接。

否则你可以使用 Placeholder 并在其中放置表格,并设置 Placeholder 的可见属性,Placehodler 不会渲染任何东西。

毕竟你可以使用同一个表,添加 ID 和 runat="server" 属性并设置为从后面的代码可见。

例如 :

<table ID="myTable" runat="server">
...

然后在代码中隐藏整个表格:

protected void Page_Load(object sender, EventArgs e)
{
  myTable.Visible = false;
}
于 2012-12-26T15:06:21.890 回答
0

正如 Antonio Bakula 所说,取决于您的目标,您可以将每个单独的链接设置为不可见。

或者,如果它们很多,则将它们放在可以批发打开和关闭的面板中。

于 2012-12-26T15:09:15.107 回答
0

面板是一个不错的选择。

An<asp:Panel />在 HTML 中呈现为<div>. 如果您不熟悉 HTML,a<div>只是一个盒子,您可以在其中放入任何东西(包括 a <table>)。例如,StackOverflow 上的每个答案都显示在<div>.

如果您设置Visible="false",那么整个<div>内容将从您的 HTML 输出中删除,即使它存在于.aspx页面上。基本上,您可以使用这种方法非常有效地隐藏非管理员的链接。

但是,这仍然不是很安全。恶意用户通过猜测来尝试找到管理员链接是很常见的(例如:/admin/default.aspx/admin/admin.aspx等...)。您应该使用角色来阻止用户访问您的管理员链接。角色甚至会阻止某些类型的用户(例如:未登录的用户或非管理员用户)访问这些页面。用户将看到一条错误消息,而不是看到该页面。

于 2012-12-26T15:11:44.420 回答
0

您可以使用 apanel在其中插入所有其他控件(超链接、按钮...等),并且在您的代码中,您可以通过调用显示和隐藏面板以及里面的所有内容

panel.visible=true
panel.visible=false
于 2012-12-26T15:12:38.540 回答
0

我会使用 a<asp:PlaceHolder因为它只是一个占位符..并且没有其他语义价值,如表格、面板或这些东西..

于 2012-12-26T15:08:09.140 回答