ASP.NET最好控制隐藏里面的数据吗?

时间:2012-12-26 15:04:19

标签: asp.net controls

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

除了我应该使用哪种控制的表格?我应该使用面板还是别的什么?

5 个答案:

答案 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