簡體   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