目前我有一个页面,当您填写文本框并单击按钮时,它会将您重定向到另一个页面。
需要加载页面,因为它会更新并显示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);
}
}
所以我想知道这是否真的可行,我也想知道我是否只是查找错误的关键字来找到解决方案。
我已经花了一些时间在这上面,并且尚未找到某种解决方案,但我是网络开发的新手,所以我可能只是错过了一些非常简单。
另外我只是真正理解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();
如需更新支票,我会看看我是否可以验证用户名是否为有效用户名,如果没有,则会弹出失败文字。
答案 0 :(得分:1)
你似乎对Response.Redirect(...)
实际做了什么有误解。在我看来,方法名称有点误导。它建议以某种方式将当前正在执行的请求Response
发送到请求浏览器以外的其他地方。这不是的情况。该名称也可能是Response.SendRedirectResponseToBrowser
,因为这是Response.Redirect
所做的。
因此,当您执行Response.Redirect(url)
时,您告诉正在执行您的页面的服务器应该向浏览器发送响应,告诉浏览器对提供的GET
请求执行url
}}。然后,浏览器会执行此操作,此时该页面需要包含单独的Redirect
,以便进一步告知浏览器下一步的位置。
在这种情况下,需要修补"http://website.com/scripts/" + username.text "/value/0"
处的页面,以便在处理完请求后,它还会发送一个重定向响应,其中包含您要在下一个显示的网址。
如果您无法控制该页面,则必须以其他方式解决此问题。一些选择:
ajax
申请"http://website.com/scripts/" + username.text "/value/0"
网址。然后在完成后将页面位置设置为您要在下一个显示的网址。http://website.com/....
目标中的_blank
网址,然后将其设置为下一页的位置。System.Net.Http.HttpClient
来请求http://website.com/....
网址,然后进行重定向。这意味着服务器在处理按钮单击时请求URL。注意:
http://website.com/....
网址更新某些状态(比如存储数据库中的某些更改或类似内容),那么应使用POST
请求请求,而不是{ {1}}。 GET
请求可以获得缓存响应,这意味着服务器可能永远不会真正看到请求,因此不会进行任何处理。GET
看起来很危险。您应该至少在网址上对"http://website.com/scripts/" + username.text "/value/0"
- username.text
进行编码。更好的是,第一次验证输入的用户名实际上是有效的用户名。答案 1 :(得分:0)
您可以将Refresh header(不元元刷新元素)添加到包含XML的响应中。在标题中,您可以指定另一个URL以及重定向之前等待的秒数。
答案 2 :(得分:0)
我想它应该使用JavaScript(前端)而不是后端错误处理,因为它会转到另一个页面。使用promise来处理异常