他のページへのリンクを含むコントロールを使用し、これらすべてのリンクをコントロール(EGテーブル)内に配置して、コードで非表示にできるようにします(管理者のみに表示)
テーブル以外にどのコントロールを使用すればよいですか?パネルか何か他のものを使うべきですか?
一部のリンクを非表示にする場合は、単純なハイパーリンクコントロールを使用し、管理者のみに表示プロパティを設定します。リピーターコントロールを使用してテーブルをレンダリングし、ItemTemplateでハイパーリンクを設定できます。
それ以外の場合は、プレースホルダーとプレーステーブルを使用し、プレースホルダーの表示プロパティを設定できます。Placehodlerは何もレンダリングしません。
そして結局、同じテーブルを使用して、IDとrunat = "server"属性を追加し、コードビハインドから見えるように設定することができます。
例えば :
<table ID="myTable" runat="server">
...
次に、コードでテーブル全体を非表示にします。
protected void Page_Load(object sender, EventArgs e)
{
myTable.Visible = false;
}
<asp:PlaceHolder
単なるプレースホルダーであり、テーブル、パネル、またはこのようなもののような他の意味のある値がないため、私はを使用します。
アントニオ・バクラが言ったように、あなたの目標に応じて、あなたは通り抜けて、個々のリンクを非表示として設定することができます。
または、それらがたくさんある場合は、卸売りのオンとオフを切り替えることができるパネルにそれらを投げます。
パネルは良い選択です。
は<asp:Panel />
HTMLでとしてレンダリングされます<div>
。HTMLに慣れていない場合、a<div>
は単なるボックスであり、その中には何でも(を含む)入れることができます<table>
。たとえば、StackOverflowの各回答はの中に表示され<div>
ます。
を設定すると、ページに存在していても、HTML出力からVisible="false"
全体が削除されます。基本的に、このアプローチを使用すると、管理者以外の人からリンクを非常に効果的に隠すことができます。<div>
.aspx
ただし、これはあまり安全ではありません。悪意のあるユーザーが、推測するだけで管理者リンクを見つけようとすることは非常に一般的です(例:、、/admin/default.aspx
など/admin/admin.aspx
)。ユーザーが管理リンクにアクセスできないようにするには、ロールを使用する必要があります。ロールは、特定のタイプのユーザー(たとえば、ログインしていないユーザー、または管理者以外のユーザー)がこれらのページにアクセスすることさえできません。ページを表示する代わりに、代わりにエラーメッセージがユーザーに表示されます。
を使用しpanel
て、他のすべてのコントロール(ハイパーリンク、ボタンなど)を挿入できます。コードでは、を呼び出すことで、パネルとその中のすべてを表示および非表示にできます。
panel.visible=true
panel.visible=false