在C#中使用Response.Redirect

时间:2010-02-16 23:41:08

标签: c# asp.net

我正在开发一个我继承的网站(ASP.NET和C#),我注意到在项目页面代码中的几乎每个方法(除了一些辅助方法)之外,原作者使用Response.Redirect ()重定向到一个页面(通常是home.aspx,但不总是)。

这样做的目的是什么?对我来说似乎不需要 - 至少它似乎没有改变网站正在做的任何东西,如果我保留或删除它。

感谢。

5 个答案:

答案 0 :(得分:4)

Response.Redirect()向浏览器发出302 HTTP重定向标头,这会导致浏览器从您的网站请求新页面。

如果作者使用POST-Redirect-GET模式来解决用户能够点击“刷新”按钮并重新发布表单的问题,这可以解释为什么它在任何地方都被使用。

答案 1 :(得分:0)

如果没有更多信息,很难确定。

但是,如果home.aspx是一个空白页面,可能是原作者可能一直试图提前终止页面处理以防止后续处理。

通常,Response.Redirect()用于结束响应并通知浏览器导航到新页面。但是,如果浏览器缓存了该页面,则它实际上可能无法执行到服务器的访问。我见过一些开发人员这样做的案例,作为后续处理短路的一种方式。

代码也可能会做一些疯狂的事情,例如将home.aspx作为所有数据的主显示页面 - 并使用会话状态或缓存来跨页面传递更改。可悲的是,我也看到过这样做...... 叹息。通常这样做是为了处理用户能够多次提交表单。

答案 2 :(得分:0)

重定向应该仅在位置由后面的代码中的某些内容确定时使用。重定向倾向于导致ThreadAbortExceptions,当一个简单的href可能是医生订购的时候,这只是对系统的进一步要求。除非你能为重定向定义一些真正的架构需求,否则你可能只想开始逐步解决这些问题。

答案 3 :(得分:0)

它向用户代理/浏览器发送响应并告诉它重定向到指定的页面。它可以放在代码的任何部分,但默认情况下,页面仍将执行完成,然后重定向响应将设置为客户端...

只应在您正在运行的代码的最后一点(通常)

答案 4 :(得分:0)

ASP.NET页面回发给自己,因此有些人使用重定向方法打开新页面。在需要时使用它。如果删除它时没有看到区别。可能是该网站使用链接从一个页面导航到另一个页面,而不是通过服务器进行。