使元素无法操纵可见性
Posted
技术标签:
【中文标题】使元素无法操纵可见性【英文标题】:Making Elements not possible to manipulate Visibility 【发布时间】:2021-02-02 04:43:06 【问题描述】:我有一个具有多个用户权限的 ASP-WebForm-Application。
在 CodeBehind 中,如果没有给出特定的权限,我会隐藏一些元素。但是使用 F12,用户可以操纵代码以获得一些他不允许的功能。
是否有可能从 CodeBehind 中隐藏元素,使它们无法通过代码操作显示?类似于在 CodeBehind 中完全摧毁它们?
例如基于列表元素的导航,我想在其中隐藏一些链接:
<ul>
<li>
<a>link 1<a/>
</li>
<li>
<a>link 2<a/>
</li>
<li>
<a>link 3<a/> // Has to be hidden by some conditions
</li>
</ul>
希望有人可以帮助我!
【问题讨论】:
不,你不能。如果您找到一种方法,我会认为您使用的浏览器已损坏并会寻找替代品。如果您想对用户隐藏某些内容,请不要将其发送给客户端。 【参考方案1】:您可以使用asp:PlaceHolder
或asp:Panel
扭曲您的内容并使其可见或不可见。
您也可以在元素上添加runat="server" Visible="false"
并操作可见元素。
例子:
<ul>
<li>
<a>link 1<a/>
</li>
<li>
<a>link 2<a/>
</li>
<li runat="server" id="pnlToHide">
<a>link 3<a/> // Has to be hidden by some conditions
</li>
</ul>
或
<ul>
<li>
<a>link 1<a/>
</li>
<li>
<a>link 2<a/>
</li>
<asp:PlaceHolder runat="server" ID="pnlToHide2">
<li>
<a>link 3<a/> // Has to be hidden by some conditions
</li>
</asp:PlaceHolder>
</ul>
以及背后的代码
pnlToHide.Visible = false;
【讨论】:
好的。 runat="server" AND Visible="false" 不会交付给客户端? @comidos yes 不会渲染,试试看 “扭曲你的内容”是什么意思? 这并不容易。例如,我使用带有嵌入式按钮的 DevExpress 控件,我只能在 CodeBehind 中通过 Visisble=false 隐藏但不能设置 runat="server" 你能用 元素来解释一下吗?以上是关于使元素无法操纵可见性的主要内容,如果未能解决你的问题,请参考以下文章