我有一个 Web 表单,我试图在使用 .NET AJAX 1.0 扩展时实现动态下拉列表。我已经成功实现了所需的位,但有一个有趣的怪癖。
当我从我的第一个下拉列表中选择一个值时,我的回调就会发生并且我的页面会正确更新。我选择的下一个值,我收到以下错误:
Sys.WebForms.PageRequestManagerServerErrorException:处理服务器上的请求时发生未知错误。返回的状态码是:404
不管我首先使用什么控件,第一个请求有效,第二个无效。查看我的 IIS 日志,我看到以下几行:
2008-10-17 14:52:14 W3SVC1 127.0.0.1 POST /Aware/Xtend/mParticipant/NewPlannedService.aspx WIN=Participant_1224255079212&Title=Participant 80 - 127.0.0.1 200 0 0
2008-10-17 14:52:20 W3SVC1 127.0.0.1 POST /Aware/mParticipant/NewPlannedService.aspx WIN=Participant_1224255079212&Title=参与者 80 - 127.0.0.1 404 0 0
如您所见,我的帖子 URL 已完全更改。使用 Fiddler 观察请求/响应,我可以在服务器的响应中看到这一点:
|formAction||NewPlannedService.aspx|
这只是正在执行的页面的名称,相对路径和查询字符串已被删除。
我可以通过将以下内容添加到异步回调方法的末尾来解决此问题:
this.Form1.Action = Request.Url.PathAndQuery
但这对我来说似乎非常蹩脚,闻起来有点像发霉的奶酪。任何人都可以指出我正确的方向吗?
更新:经过进一步检查,我发现 NewPlannedService.aspx 不是原来的执行页面。Page1.aspx 正在执行,然后调用 Server.Transfer("/folder/NewPlannedService.aspx")。所以浏览器中的 URI 是http://whatever.com/Page1.aspx,但实际执行的页面是http://whatever.com/folder/NewPlannedService.aspx