簡體   English   中英

使用C#代碼打開新窗口

[英]open new window using c# codebehind

我正在嘗試從我的代碼隱藏頁面中打開一個新窗口,由於某種奇怪的原因,它無法正常工作。 根據我的搜索,兩種常見的方法是:

1.  Using Response.Redirect
2.  Page.Client.RegisterStartupScript

我有一個用於URL或文件名的字符串變量。 為了幫助您了解我在做什么,我請某人從該站點下載資源。 當他們單擊資源的鏈接(它是文件或站點鏈接)時,我將其帶到一個處理頁面,在該頁面中,他們將查看他們是否有權訪問文件並記錄他們訪問它的權限。 完成此操作后,它們將被定向到站點或接收下載文件。

我使用一個字符串作為名稱。 我嘗試過的兩種方法是:

string sPageRedirect = 
     "<script type=\"text/javascript\" >window.open(' " + sFileName + "');</script>";

Page.ClientScript.RegisterStartupScript(this.GetType(), "Openwindow", String.Format(sPageRedirect),true);

使用此方法時。 我的過程頁面(trackdownload)只是在此處空白處包含文件信息

Response.Redirect(sPageRedirect);

使用此方法時,出現文件未找到錯誤。 當我查看URL時,它似乎將其附加起來,所以我得到:

mysite/downloads/%3Cscript%20type=%22text/javascript%22%20%3Ewindow.open('%20http://mysite/myhelp/gotothis.htm');%3C/script%3E

更新

首先,感謝YK1,Yuck和Kostas ch。 回答問題。 這是我的第一篇文章,我想確保自己先做作業並提供詳細信息。 我希望也能回答問題! 我一直在玩這個游戲,然后想出了一個我想分享的替代解決方案。 首先,正如您所指出的,對於我想做的事情,它無法實現我所希望的。 因為當用戶單擊超鏈接下載文件或定向到將在新窗口中打開同時仍在記錄下載內容的新頁面時,它在打開新窗口時失敗。 我的目標是記錄所有轉到的幫助鏈接和下載的文件。 因此文件處理始終如一,我對此感到滿意。 我所做的解決方案基於Yuck的想法。 所以我在做的是

如果鏈接是文件,則像以前一樣轉到我的跟蹤頁面。

如果鏈接是Web鏈接,則我已將href修改為使用JS調用。 基本上,Yuck的建議。 在處理頁面上,我仍在進行記錄,但是我添加了讀取最后4個字符(即.htm)的邏輯,如果單擊的是那個文件,則跟蹤頁面會將自身重定向回調用頁面。 這樣,對於用戶來說,他們仍然在主要網站上,並且他們會獲得一個包含幫助文件的新窗口。 我們可以執行window.open的原因是,他們經過培訓后會期望在那些文件中使用它,因此我不會對用戶造成任何問題。

所以在我的代碼背后,我這樣做

if (dsData.Tables[0].Rows[i]["filetype"].ToString().Trim() == ".html" )
                                    {
                                        sClick = " onclick=\"openNew('" + ConfigurationManager.AppSettings["Domain"].ToString() +  dsData.Tables[0].Rows[i]["fileandpath"].ToString().Trim() + "')\"";
                                   }
                                    cell.InnerHtml = "<a href=\"downloads\\tracker.aspx?File=" + dsData.Tables[0].Rows[i]["file"].ToString
+ "\"" + sClick + ">" + dsData.Tables[0].Rows[i]["name"].ToString().Trim() + "</a>";

在我的頁面上有這個

function openNew(sLink) {
            window.open(sLink);
        }

您不能在后面的代碼中執行此操作,因為它需要影響瀏覽器。 您可以嘗試使用jQuery和ASP .NET中的一些變量:

<script type="text/javascript">

    $(function() {
        window.open('<%: sFileName :>');
    });

</script>

准備好文檔后,這將立即打開一個窗口。 請注意,這對於您的用戶而言尤其煩人,因此我不確定您要在何處或為什么使用它。 您可能還會遇到彈出窗口阻止程序的麻煩。

嘗試使用

 Page.ResolveUrl("~/Pages/sPageRedirect.aspx")

在第一種情況下,您已顯式提供了腳本塊,並且還將最后一個參數傳遞給true。 更改為此:

Page.ClientScript.RegisterStartupScript(this.GetType(), "Openwindow", sPageRedirect, false);

第二種情況,您不能重定向到javascript :)您重定向到一個地址:

Response.Redirect(sFileName);

無論如何,是的,您會遇到彈出窗口阻止程序的問題。 自動彈出窗口是不可取的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM