コードビハインド ページから新しいウィンドウを開こうとしていますが、奇妙な理由で期待どおりに動作しません。私が検索したものから、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);
}