LinkBut​​ton的事件时属性设置

问题描述:

我必须在设定为外部URL的ASCX页面表单操作LinkBut​​ton的事件时<form action>属性设置

<form id="fLoginForm" runat="server" action="http://external.url" method="post" defaultbutton="bSignIn">

里面有一个标准的ASP的LinkBut​​ton

<asp:LinkButton CssClass="btn" ID="bSignIn" runat="server" Text="Sign In" OnClick="bSignIn_Click" />

不点火

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

谢谢。

+0

ascx's是用户控件。这些应该没有嵌入其中的表格。根据使用的浏览器,在用户控件中放置表单可能会导致出现奇怪和意外的行为。无论如何,无论如何,嵌套表单都无效。 – NotMe 2011-01-28 20:31:04

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

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

为什么不处理的登录功能的处理器bSignIn_Click()内?

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

你所拥有的形式,当LinkBut​​ton的点击,在表单中的所有数据被张贴到URL,而不是回发到同一所期望的URL形式(因此术语“回传”),您可以在其中处理所有这些事件。

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

那么这个行为实际上非常奇怪,因为它在同事机器上表现完全不同 - 从SVN中重新检查解决方案,它的工作。奇怪。