2012-05-07 7 views
0
public void Save(object s, EventArgs e) 
{ 

    HtmlMeta meta = new HtmlMeta() { Name = "DownloadOptions", Content = "noopen" }; 

    MetaPlaceHolder.Controls.Add(meta); 

    string name = "Editor.html"; 

     //Response.AppendHeader("X-Download-Options", "noopen"); 
    Response.AppendHeader("content-disposition", "attachment; filename=" + name); 
    Response.WriteFile(Server.MapPath("~/SentinelOperationsUI/Editor.html"), true); 
    Response.End(); 
} 

メタタグ<meta name="DownloadOptions" content="noopen" />は、ヘッダに手動で追加すると、ie7でうまくいきます。しかし、このように動的に追加しようとすると、何の効果もありません。ボタンクリック時にメタタグを動的に追加する

このダウンロードボタンイベントにこのメタタグを追加するにはどうすればよいですか?私はこのボタンに追加したいだけです。他のすべてのダウンロードボタンのクリックイベントでそれを削除する必要がありますか?

あなたはアイデアを得ることを願っています。それ以外の場合は精巧ではありません。ありがとう!

+0

'Page.Header.Controls.Add(meta);'を試したことがありますか? –

+0

@TimSchmelter実際にそれを考えましたが、それは違いがありますか?私のプレースホルダは ''セクション – Johan

答えて

1

ページのヘッダーの内側にあるヘッダーを設定し、ファイルをロードしようとするヘッダーを追加してから、1つのhtmlファイルを送信します。

上書きして、WriteFile関数で送るあなたが前に設定しようとするHTMLヘッダーでなく、htmlファイルを無視された添付ファイルを持つ追記ヘッダはブラウザに直接送信され、そしてResponse.Endの前に追加したHtmlMetaを含む他のすべての書き込みを停止します。

.End()を削除しても、送信したすべてのデータの後にヘッダーが書き込まれ、意味もありません。

+0

にありますので、私は動作しているように見えるjqueryソリューションを試しました。別のダウンロードボタンをクリックしたときにメタタグを追加/削除します。それはokソリューションのように聞こえるか? – Johan

+0

@ヨハンの仕事は、その大丈夫です。私には聞こえないのは、ページが読み込まれたときだけヘッダーが読み込まれるからです。ページヘッダーがブラウザによって再読み込みされず、ページが戻ってきて、あなたの場合にはHTMLヘッダーを再送しません。ハンドラを使用して直接リンクでファイルを送信してみませんか? – Aristos

+0

最後の部分であなたに従っているかどうかわかりません。ジェネリックハンドラでファイルを作成する必要がありますか? – Johan