Posts Tagged ‘Asp.Net’

Forçar download em Asp.Net

terça-feira, setembro 23rd, 2008

Uma rotina bem simples para forçar o download de arquivos em Asp.Net, evitando que eles sejam abertos no browser. Por exemplo, se você quiser forçar que o usuário baixe um arquivo de imagem ao invés de abrir no browser, esta função será útil. Segue o código em VB.Net e C#:

''' <summary>
''' Rotina para forçar o download de arquivos
''' </summary>
''' <param name="caminhoArquivo">Caminho para o arquivo no sistema de arquivos</param>
''' <param name="contentType">Content-Type do arquivo (opcional)</param>
Protected Sub ForceDownload(ByVal caminhoArquivo As String, _
                            Optional ByVal contentType As String = "application/octet-stream")
 
    Dim arquivo As FileInfo = New FileInfo(caminhoArquivo)
    Response.Clear()
    Response.AddHeader("Content-Disposition", "attachment; filename=" + arquivo.Name)
    Response.AddHeader("Content-Length", arquivo.Length.ToString())
    Response.ContentType = contentType
    Response.WriteFile(arquivo.FullName)
    Response.End()
End Sub
/// <summary>
/// Rotina para forçar o download de arquivos
/// </summary>
/// <param name="caminhoArquivo">Caminho para o arquivo no sistema de arquivos</param>
/// <param name="contentType">Content-Type do arquivo (opcional)</param>
protected void ForceDownload(string caminhoArquivo, string contentType)
{
	if (contentType == null)
		contentType = "application/octet-stream";
 
	FileInfo arquivo = new FileInfo(caminhoArquivo);
	Response.Clear();
	Response.AddHeader("Content-Disposition", "attachment; filename=" + arquivo.Name);
	Response.AddHeader("Content-Length", arquivo.Length.ToString());
	Response.ContentType = contentType;
	Response.WriteFile(arquivo.FullName);
	Response.End();
}

ASP.Net – Desabilitar o cache do browser para a página

terça-feira, abril 15th, 2008

É fácil desabilitar o caching da página no browser. Basta inserir a seguinte linha no Page_Load:

Response.Cache.SetCacheability(HttpCacheability.NoCache)

Adicionar registros pelo rodapé do GridView

segunda-feira, agosto 27th, 2007

Sem dúvida alguma o controle GridView trouxe inúmeras melhorias sobre seu antecessor, o DataGrid. Mas um detalhezinho tem incomodado a comunidade de programadores .Net: quando não existem registros a exibir no GridView, ele simplesmente não exibe o controle, impossibilitando a inserção de registros através do rodapé quando não há nenhum registro, como muitos faziam no DataGrid.
Mas como na informática nada é impossível :) , meu amigo Marco Chilá conseguiu uma solução para essa "coisinha chata" do GridView e postou em seu blog. Vale a pena dar uma olhada na solução

Mudando cor de fundo da linha do GridView em tempo de execução

terça-feira, agosto 14th, 2007

Esses dias precisei de uma rotina que altera a cor de fundo da linha do GridView em tempo real. A princípio achei que fosse apenas atribuir uma string com a cor em hexadecimal (formato usado no HTML) para a propriedade BackColor do GridViewRow que já estaria resolvido, mas não deu certo pois a propriedade BackColor é do tipo System.Drawing.Color e não aceita strings. Dei uma fuçada nas classes do namespace System.Drawing e encontrei a solução:

e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#FF0000")

Coloquei o código no evento RowDatabound do GridView e deu certo. Fica aí a dica para os iniciantes em .Net como eu. ;)

Obter valores da Session em uma class library

segunda-feira, agosto 13th, 2007

Essa dica teve a colaboração do meu amigo Marco Chilá.

Se você tem uma class library no .Net (fora do contexto web) e deseja pegar o valor de uma variável armazenada na Session, em um contexto web, faça o seguinte:

Imports System.Web
var = HttpContext.Current.Session("variavel")

O mesmo vale para Application, Request, Response, etc:

Imports System.Web
var = HttpContext.Current.Application("variavel")

Bastante útil para acessar os recursos do contexto web, mesmo estando em uma class library fora dele.