0

コードビハインド ページから新しいウィンドウを開こうとしていますが、奇妙な理由で期待どおりに動作しません。私が検索したものから、2つの一般的な方法は次のとおりです。

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

URL またはファイル名に使用される文字列変数があります。私が何をしているのかを理解してもらうために、誰かにサイトからリソースをダウンロードしてもらいます。リソースのリンク (ファイルまたはサイト リンク) をクリックすると、処理ページに移動し、ファイルにアクセスする権限があるかどうかを確認し、アクセスしたことを記録します。これが完了すると、サイトに誘導されるか、ダウンロード ファイルを受け取ります。

名前には文字列を使用します。私がこれを試した2つの方法は次のとおりです。

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さんありがとうございます。質問に答えるために。これは私の最初の投稿であり、最初に宿題をして詳細を提供していることを確認したかった. 質問にも答えていただけると幸いです!私はこれをいじり続け、私が共有すると思った別の解決策を思いつきました. まずご指摘のとおり、やりたいことが思うようにできませんでした。ハイパーリンクをクリックしてファイルをダウンロードしたり、ダウンロードの記録中に新しいウィンドウで開く新しいページに移動したりすると、新しいウィンドウを開くことができなかったからです。私の目標は、アクセスしたすべてのヘルプ リンクとダウンロードされたファイルを記録することでした。そのため、ファイル処理はいつもどおりに機能し、満足しています。私が行った解決策は、Yuck のアイデアに基づいていました。だから私がやっていることは

リンクがファイルの場合、以前と同じように追跡ページに移動します。

リンクが Web リンクの場合、JS 呼び出しを使用するように href を変更しました。基本的に、ユックが提案したもの。処理ページでは、まだ記録を行っていますが、最後の 4 文字 (つまり .htm) を読み取るロジックを追加しました。クリックされたファイルがそのファイルであった場合、追跡ページは呼び出しページにリダイレクトされます。このようにして、ユーザーはプライマリ Web サイトにとどまり、ヘルプ ファイルを含む新しいウィンドウを取得します。window.open を実行できる理由は、それらのファイルに対して 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);
        }
4

3 に答える 3

0

使ってみてください

 Page.ResolveUrl("~/Pages/sPageRedirect.aspx")
于 2013-06-12T19:56:42.683 に答える
0

最初のケースでは、明示的にスクリプト ブロックを提供し、最後のパラメーターも true に渡しました。これを次のように変更します。

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

2 番目のケースでは、javascript にリダイレクトできません :) 次のアドレスにリダイレクトします。

Response.Redirect(sFileName);

とにかく、はい、ポップアップ ブロッカーに問題があります。自動ポップアップは望ましくありません。

于 2013-06-12T20:21:45.067 に答える