Pergunta

Eu nunca usei HTTP manipuladores antes, e eu tenho um trabalho, mas eu não tenho certeza se eu estou realmente utilizá-lo corretamente. I têm gerado uma string que será salva como um arquivo CSV. Quando o usuário clica em um botão, eu quero a caixa download dialog para abrir para que o usuário pode salvar o arquivo. O que eu tenho as obras, mas eu continuo lendo sobre como modificar o arquivo web.config e eu não tive que fazer isso.

Meu Handler:

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();

}

E esta é a partir da página que permite que o usuário download: (No botão do clique)

string dataToConvert = "MYCSVDATA....";

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

handler.ProcessRequest(this.Context);

Esta multa funciona, mas há exemplos que eu vi sempre instanciar o manipulador e sempre parecem modificar o web.config. Estou fazendo algo errado?

Graças

Foi útil?

Solução

Parece-me que ele não está realmente usando o fato de que é um manipulador em tudo. Qual é a vantagem em fazer uma classe separada para esta implementação de uma interface que você realmente não usar, em vez de colocar o código dentro de sua classe de página existente? Você só está fazendo coisas para a resposta? - então por que não fazer isso dentro da página

A abordagem típica de modificar web.config é porque você quer o manipulador de lidar realmente a pedido - ao passo que no seu caso a página é receber o pedido, e apenas pedindo um objeto que acontece para implementar a interface do manipulador para despejar os dados para a resposta.

Em particular, seria esse manipulador de ser utilizável em todos como um manipulador autônomo para uma resposta normal? Parece que ele só vai fazer qualquer coisa útil quando você chamou AddData sobre ele ... se você fez registrá-lo no web.config, seria apenas responder com um arquivo CSV vazio (ou possivelmente uma exceção), certo? Se for esse o caso, eu realmente não acho que ele deve implementar a IHttpHandler em primeiro lugar -. Ele vai enganar outros desenvolvedores que olham para ele mais tarde

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top