1

これまでHTTPハンドラーを使用したことがなく、使用できるようになりましたが、実際に正しく使用しているかどうかはわかりません。CSVファイルとして保存される文字列を生成しました。download dialogユーザーがボタンをクリックしたときに、ユーザーがファイルを保存できるようにボックスを開きたいと思います。私が持っているものは機能しますが、web.configファイルの変更について読み続けており、それを行う必要はありませんでした。

私のハンドラー:

private string _data;
private string _title = "temp";


public void AddData(string data)
{
    _data = data;
}



public bool IsReusable
{
    get { return false; }
}

public void ProcessRequest(HttpContext context)
{

    context.Response.ContentType = "text/csv";
    context.Response.AddHeader("content-disposition","filename=" + _title + ".csv");
    context.Response.Write(_data);
    context.Response.Flush();
    context.Response.Close();

}

そして、これはユーザーがダウンロードできるページからのものです:(ボタンクリックで)

string dataToConvert = "MYCSVDATA....";

csvHandler handler = new csvHandler();
handler.AddData(dataToConvert);

handler.ProcessRequest(this.Context);

これは正常に機能しますが、ハンドラーをインスタンス化し、常にweb.configを変更しているように見える例はありません。私は何か間違ったことをしていますか?

ありがとう

4

1 に答える 1

4

それがハンドラーであるという事実を実際には使用していないように私には思えます。既存のページクラス内にコードを配置するのではなく、実際には使用しないインターフェイスを実装するために別のクラスを作成することの利点は何ですか?あなたは応答に対して何かをしているだけです-それでは、なぜページ内でそれをしないのですか?

web.configを変更する一般的なアプローチは、ハンドラーに実際にリクエストを処理させたいためです。一方、あなたの場合、ページはリクエストを受信し、ハンドラーインターフェイスを実装するオブジェクトにデータを応答にダンプするように要求するだけです。 。

特に、このハンドラーは、通常の応答のスタンドアロンハンドラーとしてまったく使用できますか?それはあなたがそれを呼び出したときにのみ有用なことをするように感じますAddData...あなたそれをweb.configに登録した場合、それは空のcsvファイル(またはおそらく例外)で応答するでしょう?そうだとすれば、そもそもそれを実装するべきではないと私は本当に思いますIHttpHandler-それは後でそれを見る他の開発者を誤解させるでしょう。

于 2010-03-13T21:06:26.077 に答える