使元素无法操纵可见性

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:PlaceHolderasp: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" 你能用 元素来解释一下吗?

以上是关于使元素无法操纵可见性的主要内容,如果未能解决你的问题,请参考以下文章

可见性原子性有序性

无法设置约束组的可见性

根据地理位置权限更改 HTML 元素的可见性 [重复]

.fadeOut() 方法使用可见性属性而不是显示属性

IE10:“可见性:可见”在“可见性:隐藏”元素的伪元素之前

java中volatilesynchronized