【发布时间】:2011-03-23 15:27:43
【问题描述】:
我在后面的代码中有一些功能,执行后需要将请求转发到另一个页面。我想通过在 Java 中设置请求属性来传递数据(即 - 我不希望它在重定向响应的查询字符串中)。 ASP.NET (c#) 可以做到这一点吗?
【问题讨论】:
标签: asp.net redirect response.redirect
我在后面的代码中有一些功能,执行后需要将请求转发到另一个页面。我想通过在 Java 中设置请求属性来传递数据(即 - 我不希望它在重定向响应的查询字符串中)。 ASP.NET (c#) 可以做到这一点吗?
【问题讨论】:
标签: asp.net redirect response.redirect
如果要转发请求并保留所有 Request 变量,可以使用 Server.Transfer,也可以使用 Session。
【讨论】:
您使用的是 ASP.NET Webforms 还是 MVC?以下会将您的请求重定向到新页面。您必须测试并查看它是否转发帖子数据(我不确定)。既然您提到了它,我认为 ASP.NET 不像 java 那样具有内置的“转发:”请求。我认为出于安全原因它只是“重定向”。 (如果我错了,有人纠正我)。
在网络表单中: 试试 Response.Redirect("mynewpage")。
在 MVC 中: 在您的操作方法完成时返回 Redirect("mynewpage")
我不知道您的用例,但是将发布数据传递到不同的页面/请求通常不是一个好习惯。通常,发布的操作将负责持久性,然后将向重定向页面发出 GET 请求。如果重定向视图需要访问发布的数据,它应该去持久化机制(DB)来检索它。这种方法更安全,通常是更好的做法。这是一个非常通用的准则,因此请根据需要使用它。
HTH
【讨论】:
是 - 请参阅反射代码: HttpModule to add headers to request 但是 - 问题是 - 你真的想使用请求标头吗?可能不是。使用它们是一种技巧。如果您只是想传递信息,请使用 Context.Items 字典通过 Server.Transfer 在请求之间传输您的项目。
【讨论】:
根据您正在做什么以及您的活动在哪里,您还可以使用跨页面回发。
见http://msdn.microsoft.com/en-us/library/ms178139.aspx
否则,我会选择 Server.Transfer 的 vcsjones 答案
【讨论】: