2010-04-14 79 views
1

首先,我花時間回顧了這個似乎是最相似的問題,但是,似乎已選擇的解決方案在我的方案中不起作用。提到我擔心一些評論聲稱它是脆弱的或不適當的解決方案。響應重定向 - 在新窗口中打開鏈接

Response.Redirect to new window

- 我們有基本上包含了所有的信息,A面菜單的XML文檔。

- 我們有許多存儲在常量類中的URL。

- XML中的一個元素(稱爲標籤)用於確定菜單項是否創建爲LinkBut​​ton或Label。

- 鏈接使用自定義用戶控件,該應用程序標準用於應用程序中的所有鏈接(爲什麼類似線程的建議不起作用 - 我不希望所有鏈接都在新窗口中打開 - 只有一個)

- 在一個XML字符串中的一個元素(以及稱之爲函數)在Switch語句中用於使用響應重定向生成我們的鏈接。

它可能看起來像這樣。

switch (function) 
    { 
     case goto 1: 
     string url; 
     if (user_group == 1) 
     { 
      url = Constants.CONSTANT1 
     } 
     else 
     { 
      url = Constants.CONSTANT2 
     } 
     Response.Redirect(url) 
     case goto 2: 
     ...... 
     default: 
     ...... 
     break; 
} 

鑑於這種情況下,我想找到快速打開一個新窗口,在此switch語句中的特定情況下遇到的最好的辦法。它可以通過響應重定向來完成(這似乎是有爭議的 - 人們說不能,但其他人說他們已經成功了)?如果沒有,可以在這裏有什麼替代方法?

回答

3

你迷路了。響應重定向導致發送到瀏覽器的重定向 - 在CURRENT窗口中。

在新窗口中打開某些東西的唯一方法是發出一個html頁面,然後在另一個窗口(這是錨點上的一個屬性)中打開新的URL,或者發出JavaScript來做這件事。

不幸的是,這必須在調用你的方法之前決定 - 一旦你的方法被調用,HTTP請求即將開始。不管設計如何,都會故意忽略瀏覽器基本的請求/響應機制。

那些說他們得到了它的工作,並沒有在服務器端這樣做。服務器沒有權限將請求重定向到新的瀏覽器窗口 - 該請求必須始於瀏覽器,以在請求發出之前開始。如果沒有別的,那麼出於安全原因。

+0

我很欣賞這個解釋。幸運的是,當我們連接linkbutton控件時,我能夠找到一種替代方法。 if(function == goto_1){lnkbtn.Attributes [「onclick」] =「window.open('url')」} – user234702 2010-04-14 14:33:45

相關問題