从代码后台更改ASP.NET页面的URL

4
我正在尝试在按钮点击时更改当前aspx页面的url为其他url。使用Request.Url.AbsoluteUri可以获取url,但是否可能进行修改?如果是,需要采取哪些操作,我的意思是它会是一个新请求还是后台提交。
请告知您的看法。
谢谢, Mehul makwana

1
取决于你想要实现什么功能;你是想将浏览器重定向到一个新页面,还是将处理转移到另一个页面? - Rowland Shaw
4个回答

6

不,无法从代码后台修改当前页面的URL。

当代码运行时,一个新的请求或后台处理已经在进行中,因此一旦新的响应完成,当前页面将不再存在。

当正在创建的页面在浏览器中加载时,它的URL将被使用,而不是当前页面的URL。这个URL在请求之前就已经被决定了,因此您也无法更改它。

您可以使用Response.Redirect方法向浏览器返回一个重定向页面,并带有您想要的URL。然后,浏览器将向服务器发出另一个请求,以获取该URL对应的页面。

如果您想在不使用重定向的情况下更改要获取的页面的URL,则在代码后台进行操作为时已晚。您必须使用客户端脚本更改按钮的功能,以便直接请求新的URL而不进行后台处理。


你好,这是来自你的有用信息。使用客户端 JavaScript 是指使用 window.location.href 函数吗?但我认为即使如此也会创建新的请求。 - mehul9595
@mehul9595:是的,如果你想要改变浏览器地址栏中显示的URL,那么只有通过发送一个新的请求才能实现。 - Guffa
那么发起新请求会导致性能问题。你有其他的方法吗?否则我只能选择这个了。 - mehul9595
@mehul9595:不,没有其他方法。无法让浏览器在地址栏中显示除加载的页面的URL之外的任何内容。 - Guffa

3

您可以使用Response.Redirect()Server.Transfer(),但我建议使用前者而不是后者。


2

考虑使用jQuery或类似的库——它将允许您修改页面的DOM。如果您只能在服务器上生成新的URL,请考虑向服务器发送ajax请求。Web方法将返回一个包含新URL的自定义对象。您将使用Web方法返回的数据,并使用jQuery或任何类似的库替换它。


嘿,你能给我提供任何参考链接或代码片段吗?我不明白你的意思。 - mehul9595
想法是您点击链接。Web浏览器通过jQuery向Web方法(Web服务)发起AJAX调用。 Web服务查看您的请求,决定要执行什么操作,构建一个新的URL并将其发送回最初发送请求的函数。在函数中,您读取返回的数据(URL)并替换现有的URL。 - user338195

1

这将是一个新请求

您可以尝试使用Response.RedirectServer.Transfer


那会引起一次回传。有没有可能不进行回传呢? - KhanS
不,如果你想要跳转到其他网址,你需要进行回发(postback)。这样才能初始化所有控件。 - anishMarokey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接