如何禁用 ASP.NET MVC 按钮,以便开发者控制台无法用于重新启用它

问题描述 投票:0回答:1

正如标题所说,这可能吗?我有一个项目,在某些情况下,我需要禁用页面上的按钮。我已经为其设置了一个标志,并在控制器中进行了一些检查,并根据该标志相应地禁用了按钮。如果要禁用该按钮,它会包含

"disabled"
,否则没有任何文本,因为我发现
disabled="enabled"
仍然禁用该按钮。

我的问题是如何阻止某人通过 F12 开发人员工具更改此设置?我可以加载它,找到元素并删除禁用的属性,嘿,它不再被禁用。我如何/可以阻止这种行为?有没有办法让它更持久?

我正在使用

System.Web.Mvc.dll
v5.2.9.0

c# asp.net-mvc
1个回答
2
投票

正如其他人提到的,您无法控制其他用户在做什么。如果您已经在控制器中检查是否应启用该按钮,那么正确的解决方案是同时禁用端点,这样就不会发生任何事情,或者如果他们单击它,它会返回错误页面。
附带说明:您是对的,它只关心“禁用”一词是否存在。通常设置Disabled="disabled"是为了使其与xhtml兼容。引号中的内容根本不重要。他们被忽略了。

我们项目中的真实代码:

if (!order.CanEdit())
    return PartialView("_ErrorDialog", "Order cannot be edited.");
else if (!order.CanBeTransferred())
    return PartialView("_ErrorDialog", "Invalid status.  Cannot transfer this order");
else if (order.IsTransfer)
    return PartialView("_ErrorDialog", "Cannot transfer an existing transfer.");

您永远不应该仅仅依赖 html 来阻止功能。 或者,如果这就是所有回发,您不能只禁用按钮,您可以将操作更改为#。但这并不是万无一失的,因为有人仍然可以尝试直接呼叫您的端点。

© www.soinside.com 2019 - 2024. All rights reserved.