我的工作,我继承(ASP.NET和C#)在网站上,我注意到的是,在该项目的页面背后的代码几乎每个方法(除了一些辅助方法)原作者使用Response.Redirect()重定向到一个页面(通常是home.aspx,但并非总是)。在C#中使用Response.Redirect的
这样做的目的是什么?对我来说这似乎不需要 - 至少它不会改变网站正在做的任何事情,如果我保留或删除它。
谢谢。
我的工作,我继承(ASP.NET和C#)在网站上,我注意到的是,在该项目的页面背后的代码几乎每个方法(除了一些辅助方法)原作者使用Response.Redirect()重定向到一个页面(通常是home.aspx,但并非总是)。在C#中使用Response.Redirect的
这样做的目的是什么?对我来说这似乎不需要 - 至少它不会改变网站正在做的任何事情,如果我保留或删除它。
谢谢。
Response.Redirect()
发出302 HTTP重定向头添加到浏览器,这会导致浏览器从您的网站申请一个新的页面。
如果作者使用POST-Redirect-GET模式来阻止用户能够点击“刷新”按钮并重新发布表单的问题,这也许可以解释为什么在任何地方都可以使用它。
没有更多信息,很难确定。
但是,如果home.aspx是一个空白页面,则可能是原始作者可能试图尽早终止页面处理,以防止后续处理。
通常情况下,Response.Redirect()
用来结束响应,并告知浏览器导航到一个新的一页。但是,如果浏览器将该页面缓存起来,它可能实际上不会执行到服务器的旅程。我见过一些情况,开发人员将此作为短路后续处理的一种方式。
代码也可能会做一些疯狂的事情,比如使home.aspx
成为所有数据的主要显示页面 - 并使用会话状态或缓存来跨页面传输更改。可悲的是,我已经看到了这一点...... 感叹。通常这是为了处理用户能够多次提交表单。
没有,home.aspx页面的主页(这绝对不是空的 - 有点太满,其实不过这是另一个问题)。 – JasCav 2010-02-16 23:49:30
重定向应该只在位置由代码背后的某些东西决定时才能使用。重定向往往会导致ThreadAbortException异常,当一个简单的href可能是医生的命令时,这只是对系统的进一步需求。除非你可以定义一些真正的重定向架构需求,否则你可能只想开始逐步淘汰这些东西。
它向用户代理/浏览器发送响应,并通知它重定向到指定的页面。它可以放入任何代码的一部分,但默认情况下,该网页将仍然执行完毕,然后重定向响应将被设置为客户端...
它应该只在最后一点需要您正在运行(一般)
ASP.NET页会后回到自己的代码,因此一些使用重定向方法打开了新的一页。在需要时使用它。如果在删除它时看不到区别。这可能是该网站使用链接从一个页面导航到另一个页面,而不是通过服务器进行导航。
从您发布的内容看似不正确,但我们可能需要了解更多信息。 – ChadT 2010-02-16 23:44:36
通常Response.Redirect的原因和HTTP重定向http://en.wikipedia.org/wiki/HTTP_302 – ziya 2010-02-16 23:47:09