繁体   English   中英

在加载另一个页面后重定向到一个页面之后

[英]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请求可以获得缓存的响应,这意味着服务器可能永远不会真正看到请求,因此不会进行任何处理。
  • 像这样拼凑 url "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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM