【问题标题】:What does aspnet keep overwritting my onclick attribute?什么 asp net 不断覆盖我的 onclick 属性?
【发布时间】:2014-03-21 20:16:48
【问题描述】:

我在表单上有一个按钮。在 Page_Load 事件期间,我通过后面的代码向按钮添加了一个新的 onclick 属性。但是,当我在 Firefox 中检查按钮时,我的属性不存在并且被替换为:

onclick='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("button_modal_search", "", true, "modalSearch", "", false, false))'

这是我运行应用程序之前的标记:

这是我的代码: button_modal_search.Attributes.Add("onclick", "return showSearchSpinner()")

有人知道如何防止属性被覆盖吗?

【问题讨论】:

    标签: asp.net webforms


    【解决方案1】:

    ASP.NET 确实覆盖了您的 onclick 属性,但确实提供了 OnClientClick 属性以允许您指定自己的客户端行为:

    button_modal_search.OnClientClick = "return showSearchSpinner();"
    

    如果该属性的值是常量,您还可以将其指定为按钮标记本身的属性。

    【讨论】:

    • 我创建了一个新应用,只添加了一个按钮,并且该属性没有被覆盖,所以它似乎并不总是被覆盖。还试图弄清楚为什么它在我的情况下是压倒一切的。
    • @nate,可能是因为 ASP.NET 不能依赖按钮的默认提交行为。例如,可能是LinkButton,或者它的UseSubmitBehavior 属性设置为false
    • @nate,ASP.NET 仍应生成其自己的onclick 属性,但这应包括您在OnClientClick 中提供的代码。该属性一直对我有用(以及根据快速谷歌搜索的其他人)。问题可能出在代码的其他地方。
    【解决方案2】:

    有一个属性OnClientClick:button_modal_search.OnClientClick="return showSearchSpinner();"

    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick%28v=vs.110%29.aspx

    【讨论】:

      【解决方案3】:

      button_modal_search.Attributes.Add("onclick", "return showSearchSpinner()")

      上面的代码没问题。如果您不想回发到服务器,您只需要从 javascript 函数返回 false

      否则,它会在运行 showSearchSpinner 函数后回传到服务器。

      function showSearchSpinner(){
         // do something
         return false;
      }
      

      注意:您无需担心 ASP.Net 会替换 onclick 事件 - onclick='javascript:WebForm_... false, false))'

      基本上 showSearchSpinner javascript 函数在您单击 button_modal_search 按钮时拦截 ASP.Net 点击事件。

      【讨论】:

      • ASP.NET 并不总是让onclick 单独存在,请参阅the UseSubmitBehavior property 以获取示例。
      • @FrédéricHamidi 我从未听说过UseSubmitBehavior。我今天学到了新东西。谢谢!
      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      相关资源
      最近更新 更多