【问题标题】:enable button in C# by removing 'disabled' property using firebug通过使用 firebug 删除“禁用”属性在 C# 中启用按钮
【发布时间】:2013-01-03 03:30:55
【问题描述】:

我有一个关于禁用按钮 (C#) 的问题,需要您的帮助。

在 Asp.net (C#) 中,禁用按钮代码:

    Button btn = new Button();
    btn.click += new EventHandler(btn_click);
    btn.Enabled = false;
    btn.UseSubmitBehavior = false;

生成的 HTML:

在我使用 firebug删除 'disabled' 属性更改要提交的类型属性 之前,该按钮处于禁用状态( ) 然后用户可以点击 btn 并且它可以执行 btn_click 方法(回发)。

我们如何防止这个问题?我尝试使用 CommandName (disable, enable) 来标记禁用按钮,在 btn_click 方法中,我检查是否 CommandName== "disable" 然后停止该功能,但它非常混乱。

感谢您的帮助。

【问题讨论】:

  • 您无法阻止任何人更改浏览器中的内容。您需要在服务器端处理此问题。

标签: c# asp.net


【解决方案1】:

Client 可以移除 Disabled 属性但不能更改控件 ViewState。在服务器端,您可以这样做:

protected void btn_Click(object sender, EventArgs e)
{
     if (btn.Enabled)
     {
           // do something         
     }
}

<asp:Button ID="btn" runat="server" Enabled="false" OnClick="btn_Click" Text="Test" />

【讨论】:

  • 我用 asp.net 4 进行了测试,当我在客户端删除 disabled 属性时,我发现单击按钮时 Enabled 为 true,即使我在 Load 上将其设置为 false。跨度>
  • 你喜欢我上面的例子吗?
  • 我的错,去服务器的 dll 有问题。完美运行。
  • 通常人们会期望 asp.net mac 验证来处理这个问题,就像它对禁用的输入一样(不将它们的数据发送到服务器)。太糟糕了,这需要手动检查。
  • 发送与否的决定必须在客户端做出,我相信客户端的任何东西都可以被黑客入侵。验证应适用于双方。
【解决方案2】:

您无法控制用户的行为。您需要做的是在服务器端处理这些事情..

你可以在btn_click..中判断按钮的状态,然后做一些工作

【讨论】:

  • 您能建议如何检查状态吗?
  • @nunespascal 看看 namkha87 说了什么。
  • 谢谢。你是对的。下面的 namkha87 的解决方案对我有用。
【解决方案3】:

@bystander 是对的。您需要在服务器上检查该条件是否正确。您不能指望客户 100% 万无一失,这就是原因。

您能否改为隐藏控件,并在以后的回发中重新启用它?隐藏实际上根本不会将控件呈现给客户端。

【讨论】:

    猜你喜欢
    • 2017-04-15
    • 1970-01-01
    • 2017-04-29
    • 2020-11-02
    • 1970-01-01
    • 2021-01-13
    • 2017-12-03
    • 2016-03-09
    • 2020-05-03
    相关资源
    最近更新 更多