最近在使用Server.Transfer的时候发现了一点问题。
在Source.aspx使用Server.Transfer(“target.aspx“)转向到目标页面。
目标页面是这样一个简单的HTMLControl:

asp.net在2003和xp下的不同执行结果。<form ID=Form1 runat=server>
asp.net在2003和xp下的不同执行结果。
asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。
asp.net在2003和xp下的不同执行结果。</form
>

这时候客户端浏览器的地址栏中,2003和XP都显示为Source.aspx,这是统一的。
查看源代码可以发现,2003的服务器端执行结果为:

asp.net在2003和xp下的不同执行结果。<form ID=Form1 action="target.aspx">
asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。
asp.net在2003和xp下的不同执行结果。
</form>

XP的服务器端执行结果为:

asp.net在2003和xp下的不同执行结果。<form ID=Form1 action="">
asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。asp.net在2003和xp下的不同执行结果。
asp.net在2003和xp下的不同执行结果。
</form>

这样的话,XP下的Form就无法postback了,就post到了Source.aspx。
不知道大家有没有遇到过此类问题?

相关文章: