【问题标题】: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>

希望有人可以帮助我!

【问题讨论】:

  • 不,你不能。如果您找到一种方法,我会认为您使用的浏览器已损坏并会寻找替代品。如果您想对用户隐藏某些内容,请不要将其发送给客户端。

标签: c# html css asp.net visibility


【解决方案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"
  • 你能用
  • 元素来解释一下吗?
猜你喜欢
相关资源
最近更新 更多
热门标签