問題

ASP.NET serverside控制元件回到自己的頁面.這使得您想將使用者重定向到外部頁面的情況發生,但由於某種原因(例如為了身份驗證)需要將其釋出到該頁面.

如果您不想重定向,HttpWebRequest可以很好地工作,而JavaScript在某些情況下很好,但如果您真的需要serverside程式碼來獲取帖子的資料,可以變得棘手.

那麼如何釋出到外部URL並將使用者重定向到ASP.NET程式碼後面的結果?

  最佳答案

這就是我今天解決這個問題的方法.我從C#Corner上的this article 開始,但發現了這個例子 – 雖然技術上說明了 – 一點不完整.他說的一切都是正確的,但我需要擊中幾個外部網站來整合這個以完全按我想要的工作.

使用者根本沒有在技術上提交表單,他們點選一個連結到我們的支援中心,而是將它們記錄在一個http帖子中,必須做到支援中心的網站。

這個解決方案涉及使用HttpContext.Current.Response.Write()為表單編寫資料,然後在<body onload="">方法上使用一點Javascript將表單提交給正確的URL.

當用戶點選支援中心連結時,呼叫以下方法來編寫響應並重定向使用者:

 public static void PassthroughAuthentication()
{

    System.Web.HttpContext.Current.Response.Write("<body 
    onload=document.forms[0].submit();window.location=\"Home.aspx\";>");

    System.Web.HttpContext.Current.Response.Write("<form name=\"Form\" 
    target=_blank method=post 
    action=\"https://external-url.com/security.asp\">");

    System.Web.HttpContext.Current.Response.Write(string.Format("<input 
       type=hidden name=\"cFName\" value=\"{0}\">", "Username"));

    System.Web.HttpContext.Current.Response.Write("</form>");
    System.Web.HttpContext.Current.Response.Write("</body>");
}
 

這種方法的關鍵在於載入Javascript的位置,當頁面的主體載入時,提交表單,然後將使用者重定向回我自己的主頁.這一點的原因是我在新視窗中啟動外部網站,但如果使用者重新整理頁面,則不希望使用者重新提交隱藏表單.此外,隱藏表單將頁面推送到幾個畫素上,這些畫素使我感到緊張.

我對任何更清潔的想法都非常感興趣.

Eric Sipple

  相同標籤的其他問題

javascriptc#asp.netformspostback