如何禁用MVC按钮以便F12无法覆盖

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

正如标题所说,这可能吗?我有一个项目,在某些情况下,我需要禁用页面上的按钮。我已经为其设置了一个标志,并在控制器中进行了一些检查,并根据该标志相应地禁用了按钮。如果要禁用该按钮,则它包括“已禁用”,如果不是,则没有任何文本,因为我发现已禁用=“已启用”仍然禁用了该按钮。

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

System.Web.Mvc.dll v5.2.9.0

c# model-view-controller
1个回答
0
投票

正如其他人提到的,您无法控制其他用户在做什么。如果您已经在控制器中检查是否应启用该按钮,那么正确的解决方案是同时禁用端点,这样就不会发生任何事情,或者如果他们单击它,它会返回错误页面。
附带说明:您是对的,它只关心“禁用”一词是否存在。通常设置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.