[英]After Redirecting to a page after loading another page
目前我有一个页面,当您填写一个文本框并单击一个按钮时,它会将您重定向到另一个页面。
该页面需要加载,因为它会更新并显示 xml。 (我目前无法改变现状)
但是我要做的是在页面被重定向一次之后,再次重定向它或者只是加载另一个页面。
关于 xml 链接需要注意的是,它的一部分是用文本框创建的,因此它将是动态的。
我目前有一些类似的东西
//please note that username is a textbox, I've just left it out
<script runat = "server">
void Button_Click(Object sender, EventArgs e)
{
var url = "http://website.com/scripts/" + username.text "/value/0"
try
{
Response.Redirect(url, true);
}
catch(Exception ex)
{//From what I learnt, adding true to redirect throws an exception,
//which is how I tried executing another redirect, but it doesn't seem to
//to load the first direct, and skips straight to this, I also put this
//in finally, because it seemed more appropriate to no avail
Response.Redirect(someurl, true);
}
}
所以我想知道这是否真的可能,我也想知道我是否只是查找错误的关键字来找到解决方案。
我在这方面花了一些时间,还没有找到某种解决方案,但我是 Web 开发的新手,所以我可能只是错过了一些非常简单的东西。
此外,我只真正了解 C# 在 asp 中的工作原理,但我愿意在必要时学习如何添加 javascript 或 VB。
在此先感谢您的帮助
编辑:解决方案!
所以我设法使用 javascript 将文本框值附加到 xml 链接,请求它而不显示用户(在这种情况下不需要显示用户)。
之后弹出窗口确认成功,然后重新加载页面。
这是非常不言自明的,但我所做的是
url = "website";
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", url, true);
window.alert("success");
return true;//this reloads the page, that or just window.location.reload();
对于附加检查,我将查看是否可以验证用户名是否为有效用户名,如果不是,则弹出失败文本。
您似乎对Response.Redirect(...)
实际作用有误解。 在我看来,方法名称有点误导。 它表明以某种方式对当前正在执行的请求的Response
将被发送到请求浏览器之外的其他地方。 情况并非如此。 该名称也可以是Response.SendRedirectResponseToBrowser
,因为这就是Response.Redirect
所做的。
因此,当您执行Response.Redirect(url)
您是在告诉正在执行您的页面的服务器应该向浏览器发送响应,告诉浏览器对提供的url
执行GET
请求。 然后浏览器会这样做,此时该页面需要包含一个单独的Redirect
,以便进一步告诉浏览器下一步要去哪里。
在这种情况下, "http://website.com/scripts/" + username.text "/value/0"
需要进行修补,以便在处理请求后,它还将发送重定向响应接下来要显示的网址。
如果您无法控制该页面,则必须以其他方式解决此问题。 一些选项:
ajax
请求"http://website.com/scripts/" + username.text "/value/0"
url。 然后完成后将页面位置设置为您接下来要显示的网址。_blank
目标中打开http://website.com/....
url,然后将位置设置为下一页。System.Net.Http.HttpClient
来请求http://website.com/....
url,然后进行重定向。 这意味着服务器请求 url 作为处理按钮点击的一部分。笔记:
http://website.com/....
url 更新了一些状态(比如在数据库中存储一些更改或类似的),那么你应该使用POST
请求而不是GET
来请求它。 GET
请求可以获得缓存的响应,这意味着服务器可能永远不会真正看到请求,因此不会进行任何处理。"http://website.com/scripts/" + username.text "/value/0"
看起来有风险。 您应该至少对username.text
进行 url 编码 - HttpUtility.UrlEncode(username.text)
。 更好的是首先验证输入的用户名实际上是一个有效的用户名。您可以向包含 XML 的响应添加Refresh 标头(不是元刷新元素)。 在标头中,您可以指定另一个 URL 和重定向前等待的秒数。
我想它应该使用 JavaScript(前端)而不是后端错误处理,因为它转到另一个页面。 使用promise处理异常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.