Yog*_*dal 5 url asp.net-2.0 server.transfer
我使用的是Asp.net 2.0.我server.transfer从第1页到第2页执行操作.该URL仍然是第1页.现在我单击第2页上的链接,这将转移到第3页.因此URL应保留在第1页.而是浏览器现在显示页面的URL这是预期的行为吗?
我实际上是试图隐藏URL中的参数.
response.redirect因为我无法从此处访问上一页.任何人都能指出我正确的方向吗?
这是预期的行为。
当您使用Server.TransferASP.NET 时,通过 a 停止处理原始请求,ThreadAbortException然后立即在同一线程中开始处理新请求。新请求运行并将其输出发送到浏览器。浏览器对Server.Transfer. 浏览器所知道的就是它请求了 page1 并且服务器发回了一些内容,作为开发人员,您知道这些内容实际上来自 page2。
如果要隐藏 page2 url,则回发是泄漏的地方。为了让 page2 内容处理回发,它必须回发到 page2。如果它回发到 page1,page1 将不知道如何处理视图状态和表单事件,因为这些事件实际上是由 page2 生成的。为了实现这一点,<form>page2 提供的元素有一个actionof page2。在浏览器中查看 html 源代码后Server.Transfer,您将看到以下内容:
<form name="aspnetForm" method="post" action="Page2.aspx" id="aspnetForm">
Run Code Online (Sandbox Code Playgroud)
使用传统的 Web 表单,对用户完全隐藏 URL 的唯一真正方法是不使用回发,让 page2 上的所有链接实际上链接回 page1,并将所有逻辑添加到 page1 以适当处理它。
或者,您根本无法使用回发。如果您通过 ajax 执行所有操作,则根本不会更改浏览器 url,并且无论如何您都应该能够为用户获得更好的体验。
更好的是使用 ASP.NET MVC,它将您推向友好的类似 REST 的 URL,这些 URL 非常容易让用户理解,并且您可以在内部映射到更复杂的参数。