gpt4 book ai didi

url - Server.transfer 再次更改 URL

转载 作者:行者123 更新时间:2023-12-03 17:20:58 25 4
gpt4 key购买 nike

我正在使用 Asp.net 2.0。我做了一个 server.transfer从第 1 页到第 2 页。URL 仍然是第 1 页。现在我单击第 2 页上的链接,这会将我转到第 3 页。因此 URL 应保持第 1 页。浏览器现在显示第 2 页的 URL。是预期的行为?

我实际上是想从 URL 中隐藏参数。

  • 我不能用 response.redirect因为我无法从这里访问上一页。
  • 我尝试使用 PostBackUrl,但这对我不起作用,因为我需要保存当前页面上的数据,然后在没有发生错误的情况下显示下一页。如果数据不正确,和/或有错误,那么我需要向用户显示相同的页面。
  • 现在我想尝试 server.transfer,但那是显示上一页的 URL。

  • 有人能指出我正确的方向吗?

    最佳答案

    这是预期的行为。

    当您使用 Server.Transfer ASP.NET 通过 ThreadAbortException 停止处理原始请求然后立即在同一线程中开始处理新请求。新请求运行并将其输出发送到浏览器。浏览器对 Server.Transfer 一无所知.浏览器所知道的只是它请求了 page1,服务器向它发送了一些内容,作为开发人员,您知道这些内容实际上来自 page2。

    回发是 page2 url 泄漏的地方,如果它打算隐藏的话。为了使 page2 内容处理回发,它必须回发到 page2。如果它回发到 page1,page1 将不知道如何处理 viewstate 和 form 事件,因为它们实际上是由 page2 生成的。为了实现这一点,<form> page2 提供的元素有一个 actionpage2 .在 Server.Transfer 之后在浏览器中查看您的 html 源代码,你会看到这个:

    <form name="aspnetForm" method="post" action="Page2.aspx" id="aspnetForm">

    使用传统的 Web 表单,完全向用户隐藏 URL 的唯一真正方法是不使用回发,让 page2 上的所有链接实际链接回 page1,并将所有逻辑添加到 page1 以适当处理它。

    或者,您根本无法使用回发。如果您通过 ajax 执行所有操作,那么浏览器 url 根本不会更改,无论如何您应该能够为用户获得更好的体验。

    更好的是使用 ASP.NET MVC,它会将您推向友好的类似 REST 的 url,这些 url 很容易让用户理解,并且您可以在内部映射到更复杂的参数。

    关于url - Server.transfer 再次更改 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2429639/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com