URL 重写停止按钮事件触发

URL Rewrite Stops Button Event from firing

我有一个从母版页继承的网络表单 default.aspx

母版页中有一个带有回发按钮的小表单。

<form id="form1" runat="server">
    page content here

    <asp:Button ID="btnSubmit" runat="server" Text="Call Me Back" />
</form>

隐藏代码:

Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
     'post the data and redirect
End Sub

这工作正常,直到我将重写添加到 web.config(将 /default.aspx 重写为 /):

 <rewrite>
  <rules>
    <rule name="Default Document" stopProcessing="true">
      <match url="(.*?)/?default\.aspx$" />
      <action type="Redirect" url="{R:1}/" />
    </rule>
  </rules>
</rewrite>

当我点击按钮时,我如何获得回发,但实际的按钮事件并未触发。我在事件处理程序上设置了一个断点,但没有命中。从同一母版页继承的其他页面仍然可以正常工作。

如果我删除重写默认页面将触发按钮处理程序。

如何使用重写确保按钮事件触发

我找到了解决此问题的方法,即设置表单标签的操作值。

我不知道为什么这会修复它,所以如果有人能阐明这个问题,那将会很有帮助。

<form id="form1" runat="server" action="/">

</form>

添加到页面或母版页:

protected void Page_Load(object sender, EventArgs e)
        {       
            form1.Action = Request.RawUrl;        
        }