如何从CSHTML.CS页面操作DOM?

时间:2019-07-17 18:25:13

标签: javascript c# asp.net-core

我正在尝试根据代码背后的用户权限删除某些Web应用程序按钮。

我试图触发javascript onload来删除指定的DOM元素,但该页面会先加载,然后再修改DOM。我希望在页面加载之前先修改DOM。

1 个答案:

答案 0 :(得分:1)

您不希望依靠JavaScript来确保安全性是正确的,因为任何精通JavaScript的人都可以绕过它。

在您的cshtml页面中使用Razor语法甚至都不会放在第一位。文档是here,但实际上您只是这样做:

@if ([check if user has permission]) {
    <button>Do Something</button>
}

该语句在您的服务器上评估。因此,如果用户没有权限,该按钮将永远不会放在页面的第一位。

如果按钮具有JavaScript,可以通过执行相同的操作将其隐藏:

@if ([check if user has permission]) {
    <script>
        function doSomething() {
            //do something
        }
    </script>
}

警告:如果您在已经存在的<script>标记内执行此操作,则需要将条件JavaScript放在<text>标记内,以便Razor引擎不会尝试解释该标记。 JavaScript:

<script>
    @if (true) {
        <text>
        function doSomething() {
            //do something
        }
        </text>
    }
</script>