URL重写停止按钮事件触发

时间:2016-02-11 15:54:12

标签: asp.net .net webforms web-config postback

我有一个从母版页继承的网络表单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>

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

如果我退出重写,默认页面将触发按钮处理程序。

如何确保使用重写

触发按钮事件

2 个答案:

答案 0 :(得分:0)

我找到了一个修复方法,即设置表单标记的操作值。

我不知道为什么这会解决这个问题,所以如果有人能说明这一点,那么它会有所帮助。

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

</form>

答案 1 :(得分:0)

添加到以下页面或母版页:

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