2010-03-13 44 views
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

在我看來,它不是真正使用事實,這是一個處理可言。爲實現一個你並沒有真正使用的接口而做一個單獨的類,而不是把代碼放在你現有的頁面類中,會有什麼好處?你只是在做出迴應 - 所以爲什麼不在頁面內做這件事?

修改web.config中的典型做法是,因爲你希望處理程序實際處理請求 - 而你的情況頁面接收請求,並且只是要求一個對象,它發生實現處理器接口將數據轉儲到響應中。

特別是,這個處理程序是否可以用作正常響應的獨立處理程序?感覺好像它只會在你撥打AddData時做任何有用的事......如果你確實在web.config中註冊它,它只會響應一個空的csv文件(或可能是一個例外),右?如果是這樣的話,我真的不認爲它應該首先實現IHttpHandler - 它會誤導其他開發者稍後再看。

+0

謝謝你的回覆。我原本是在代碼頁中的,但我讀過一篇論壇帖子,有人說使用處理程序讓用戶下載會更有效率。我猜他們的場景一定是不一樣的(即不僅僅是使用響應屬性)。 – XSL 2010-03-13 21:12:59

相關問題