ASP.NET MVC中如何禁用按钮?权限不足时按钮仍显问题求助
解决无权限时按钮仍可见的问题
看起来你的核心问题是权限判断的逻辑覆盖不全,或者权限属性的取值不符合预期。我们一步步来排查和修复:
第一步:验证权限判断的正确性
首先要确认Html.Gebruiker().Autorisatie.SelfserviceHeeftBetermeldenKnop这个属性在用户无权限时是否真的返回false。你可以在页面的某个位置临时添加这段代码来测试:
@Html.Raw("权限状态:" + Html.Gebruiker().Autorisatie.SelfserviceHeeftBetermeldenKnop.ToString())
如果无权限时显示的是true,那说明权限逻辑本身有问题,需要先修复用户权限的赋值逻辑;如果显示的是false,那继续看下面的修复方案。
第二步:完善代码逻辑
你当前的代码只处理了有权限的两种情况(可以提交/暂时不能提交),但完全没处理无权限的场景——如果页面上还有这个按钮,大概率是因为其他地方重复渲染了相同ID的元素,或者你的权限判断块没有完全包裹按钮的渲染逻辑。
修改后的代码应该覆盖所有场景:
@if (Html.Gebruiker().Autorisatie.SelfserviceHeeftBetermeldenKnop) { // 有权限时,根据状态决定按钮是否可用 if (VerzuimKanBeterMelden) { <a id="aanmaken" class="btn btn-warning k-button-icontext " href="@Url.Action("VerzuimMelding", "Verzuim", new { area = "ESS" })" style="float: right; margin-left: 10px">beter melden</a> } else { // 暂时不能提交时,禁用按钮(用disabled类+指针事件禁用,比hidden更友好) <a id="aanmaken" class="btn btn-warning k-button-icontext disabled" href="#" title="Op dit moment kun je je niet beter melden" style="float: right; margin-left: 10px; pointer-events: none; opacity: 0.6">beter melden</a> } } else { // 无权限时:要么完全不渲染按钮(推荐),要么渲染一个明确禁用的按钮 // 选项1:完全不渲染(最安全,避免冗余元素) // 选项2:渲染禁用且提示无权限的按钮 <a id="aanmaken" class="btn btn-warning k-button-icontext disabled" href="#" title="Je hebt geen rechten om deze actie uit te voeren" style="float: right; margin-left: 10px; pointer-events: none; opacity: 0.6">beter melden</a> // 如果你希望无权限时完全看不到按钮,就用hidden类: // <a id="aanmaken" class="btn btn-warning k-button-icontext disabled hidden" href="#" title="Je hebt geen rechten om deze actie uit te voeren" style="float: right; margin-left: 10px">beter melden</a> }
第三步:检查重复元素
还要检查整个页面是否有其他地方定义了id="aanmaken"的按钮——ID是唯一的,如果有重复,浏览器会优先渲染第一个,可能导致你权限判断的按钮被覆盖,看起来无权限时按钮依然存在。
内容的提问来源于stack exchange,提问作者SavantKing Orange
相关产品推荐
相关产品推荐

