【问题标题】:LinkButton event not firing when <form action> attribute is set设置 <form action> 属性时,LinkBut​​ton 事件未触发
【发布时间】:2011-06-16 11:12:09
【问题描述】:

我在 ASCX 页面中有一个表单操作设置为外部 URL

&lt;form id="fLoginForm" runat="server" action="http://external.url" method="post" defaultbutton="bSignIn"&gt;

里面有一个标准的ASP链接按钮

&lt;asp:LinkButton CssClass="btn" ID="bSignIn" runat="server" Text="Sign In" OnClick="bSignIn_Click" /&gt;

当我在表单标签上设置action="http://external.url" 时,永远不会触发事件“bSignin_Click”。但是,当我删除该操作时,它会按预期工作。我想对于runat='server' 表格,表格总是会发回?我需要从动作属性中读取 URL,然后在页面中使用一些隐藏的输入值重定向到它。

谢谢。

【问题讨论】:

  • ascx 是用户控件。这些不应该有嵌入其中的表格。根据所使用的浏览器,在用户控件中有一个表单可能会导致奇怪和意外的行为。没关系,嵌套表单无论如何都不是有效的 html。

标签: c# asp.net webforms linkbutton


【解决方案1】:

实际上,当您单击链接按钮时,您的表单将回发以处理单击事件。在表单操作中,您提供了操作 URL,它将被重定向到您的操作 URL。

逻辑上你做错了,你必须删除操作 URL

【讨论】:

    【解决方案2】:

    为什么不在处理程序bSignIn_Click() 中处理登录功能?

    然后使用Response.Redirect("http://external.url");将用户重定向到所需的URL

    【讨论】:

      【解决方案3】:

      好吧,这种行为实际上很奇怪,因为它在同事机器上的行为完全不同——重新检查来自 SVN 的解决方案,它确实有效。奇怪。

      【讨论】:

        【解决方案4】:

        使用您拥有的表单,当单击链接按钮时,表单中的所有数据都会发布到 URL,而不是发回相同的表单(因此称为“回发”),您可以在其中处理所有这些事件.

        您可以尝试在隐藏字段(而不是表单操作属性)中写入该 URL,并在代码隐藏中读取该隐藏字段值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多