【问题标题】:What is the ASP.NET equivalent of setting a request attribute in Java?在 Java 中设置请求属性的 ASP.NET 等价物是什么?
【发布时间】:2011-03-23 15:27:43
【问题描述】:

我在后面的代码中有一些功能,执行后需要将请求转发到另一个页面。我想通过在 Java 中设置请求属性来传递数据(即 - 我不希望它在重定向响应的查询字符串中)。 ASP.NET (c#) 可以做到这一点吗?

【问题讨论】:

    标签: asp.net redirect response.redirect


    【解决方案1】:

    如果要转发请求并保留所有 Request 变量,可以使用 Server.Transfer,也可以使用 Session。

    【讨论】:

      【解决方案2】:

      您使用的是 ASP.NET Webforms 还是 MVC?以下会将您的请求重定向到新页面。您必须测试并查看它是否转发帖子数据(我不确定)。既然您提到了它,我认为 ASP.NET 不像 java 那样具有内置的“转发:”请求。我认为出于安全原因它只是“重定向”。 (如果我错了,有人纠正我)。

      在网络表单中: 试试 Response.Redirect("mynewpage")。

      在 MVC 中: 在您的操作方法完成时返回 Redirect("mynewpage")

      我不知道您的用例,但是将发布数据传递到不同的页面/请求通常不是一个好习惯。通常,发布的操作将负责持久性,然后将向重定向页面发出 GET 请求。如果重定向视图需要访问发布的数据,它应该去持久化机制(DB)来检索它。这种方法更安全,通常是更好的做法。这是一个非常通用的准则,因此请根据需要使用它。

      HTH

      【讨论】:

      • 在网络表单中,重定向不会保留状态或转发 POST。 Server.Transfer 确实如此。
      • 试试 Server.Transfer("mynewpage")
      • 我现在收到一个文件未找到异常。 Server.Transfer 是否希望解析物理文件路径?如果是,我不能使用它,因为该页面不是物理文件,而是重写的 URL。
      • 尝试使用相对路径而不仅仅是页面名称。像 Server.Transfer("/mynewpage.aspx") 之类的东西。用正确的相对路径替换“/mynewpage.aspx”。
      • 您是否考虑过使用 Session 对象将数据传递到新页面?它更清洁 IMO。
      【解决方案3】:

      是 - 请参阅反射代码: HttpModule to add headers to request 但是 - 问题是 - 你真的想使用请求标头吗?可能不是。使用它们是一种技巧。如果您只是想传递信息,请使用 Context.Items 字典通过 Server.Transfer 在请求之间传输您的项目。

      【讨论】:

      【解决方案4】:

      根据您正在做什么以及您的活动在哪里,您还可以使用跨页面回发。

      http://msdn.microsoft.com/en-us/library/ms178139.aspx

      否则,我会选择 Server.Transfer 的 vcsjones 答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-20
        • 2021-04-03
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 2023-03-19
        • 2011-01-31
        • 2012-03-26
        相关资源
        最近更新 更多