Response.Redirect坏种子或只是被误解

时间:2009-06-15 07:18:12

标签: c# asp.net vb.net

最近我发布了一个我认为非常简单的问题的答案,问题是关于asp.net中页面生命周期的问题,其中的项目只会反映第一次回发后所做的更改,所以我建议使用

Response.Redirect(Request.RawUrl)

几乎立刻被投票否决了(为什么会再次往返)

嗯,我想要你的建议,这种类型的东西是好的做法,简单实用还是永远不应该使用,请用一点动力备份你的答案我不时做的事情现在质疑我是否应该重新考虑它

这是原帖 Dynamically Change User Control in ASP.Net

4 个答案:

答案 0 :(得分:3)

Reponse.Redirect没有任何内在错误,只是在大多数情况下,在这种情况下不需要。您可以通过使用生命周期而不是生命周期来更改页面的构建方式。然后就不需要另一个回发了。

答案 1 :(得分:1)

ASP.Net页面生命周期提供了大量介入和设置的机会,因此我没有看到有必要使用Response.Redirect使客户端加载页面两次。

顺便说一下,使用只有一个参数的Response.Redirect可以抛出ThreadAbortException,因此通常最好使用重载Response.Redirect(string url, bool endResponse)并将第二个参数设置为false。这绝对适用于ASP.Net 1.0和1.1(见here),不确定2.0。

答案 2 :(得分:1)

另一个解决方案是使用带有AutoPostBack DropDownList的UpdatePanel来切换用户控件,然后只负责切换用户控件,当主提交按钮(或其他事件)回发整个表单时,你可以处理所有数据。

UpdatePanels会更新本地页面ViewState,如果你这样做的话。

答案 3 :(得分:0)

似乎巧合编程,但ASP.net的大部分都是。