为什么ASP.NET会更改表单操作参数?

时间:2010-07-22 15:47:13

标签: asp.net webforms

我有一个奇怪的问题。我有一个名为search.aspx的页面。单击搜索按钮时,应该将用户重定向到另一个网站。重定向代码位于其中一个回发事件中。

以下是表单代码:

<form id="form1"  runat="server" onsubmit="return CheckSearchBox();"  action="http://mysearch.company.com/default.aspx" method="post" target="_top" > 

我在两个环境中部署了相同的代码。

工作环境

它有.NET 2.0和3.0,但没有服务包。 以下是渲染源的方式:

<form name="form1" method="post" action="search.aspx" id="form1" onsubmit="return CheckSearchBox();" target="_top">

破碎的环境

它有.NET 2.0 sp2和3.0 sp1。 这是呈现相同代码的方式:

<form name="form1" method="post" action="http://mysearch.company.com/default.aspx" id="form1" onsubmit="return CheckSearchBox();" target="_top">

请注意,渲染的“动作”是不同的。所以,我有几个问题。

  • 为什么ASP.NET会在一种情况下更改操作,而不是另一种情况?
  • 为什么ASP.NET会改变行动?
  • 我可以进行某种配置,以便始终将操作更改为“search.aspx”吗? (我们多年来没有更改过这段代码,也没人想触摸它。)

3 个答案:

答案 0 :(得分:3)

原来,.NET 2.0 SP2发生了变化。在此之前,ASP.NET只是忽略了您指定的任何操作。但是在.NET 2.0 SP2中,它实际上试图使用动作中的任何内容。 See the KB article here

答案 1 :(得分:2)

我总是被告知ASP.NET覆盖了操作,根本不允许你控制它。这就是为什么他们添加了按钮的PostBackUrl属性,当你点击它时它会发布到另一个页面....

所以我很惊讶改变行动确实有效......但我不知道这个过程的一切: - )

HTH。

答案 2 :(得分:0)

摆脱runat =“server”