サーバー上のオブジェクトの1つから生成された非常に単純なhtmlレポートがあります。PageLoad
セッションからそのオブジェクトをクリアする必要があり、ユーザーがリンクボタンをクリックした後に外部のWebサービスにデータを要求したくないため、 でhtmlコードを生成します。
大まかに言うと、ユーザーがページ上のボタンをクリックすると、レポートが新しいウィンドウに表示されます。
私が言ったように、私はhtmlを生成しPageLoad
、現在サーバーの一意のファイルに保存しています。また、隠しコントロールでhtmlコードを隠すことができると思いました。しかし、それは余分な作業なしでは機能しません。それは、htmlコードを意味のない文字列に変換し、後で復元します。
を使用して、HTMLコードを現在のウィンドウに表示することができますResponse.Write(myhtml as string);
だから私の質問は:
- HTMLコードをファイルシステム以外の場所に保存できますか(セキュリティの問題で注意が必要です)
- クリックイベント時にhtmlcodeを新しいウィンドウに表示する方法。どのように使用できますか。
ここで説明されている1つの可能な解決策を見つけました。
アップデート:
コードを追加するだけです。現在のウィンドウにhtml文字列が表示されますが、これは私が望んでいるものではありません。
private void InitData(){
string filename = DateTime.Now.ToString("yyyyMMdd_HHmmssfff");
lbtnPrintOutOrder.CommandArgument = filename;
StreamWriter swXLS = new StreamWriter((MapPath("Files\\")) + filename);
string message = GetEmail();//get data form session object
swXLS.Write(message);//save data to file
swXLS.Close();
}
protected void lbtnPrintOutOrder_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{
string filePath = (MapPath("Files\\")) + e.CommandArgument.ToString();
string content;
using (StreamReader reader = File.OpenText(filePath)) {
content = reader.ReadToEnd();//get html from file
}
Response.Write(content);//load it to current window
Response.End();
}