Fala, galera!!
Hoje vou postar um código para solucionar um problema muito comum quando se trabalha com o componente fileupload.
Apesar do problema ser comum, a mensagem de erro não é nada esclarecedora.
Quando se tenta fazer o upload de um arquivo cujo tamanho seja maior do que o permitido(4MB) pelo .Net o site simplesmente "sai do ar". Exatamente. É exibida aquela mensagem de "página não disponível" e o desenvolvedor não tem nem pista do motivo do problema.
Para solucionar este problema, adicione a seguinte linha dentro da seção <system.web> do seu web.config:
<httpRuntime maxRequestLength="20480" />
Você pode também configurar o tamanho máximo do upload para um diretório específico:
<location path="uploads">
<system.web>
<httpRuntime maxRequestLength="20480" />
</system.web>
</location>
Um abraço e até a próxima!!
sábado, 5 de junho de 2010
sexta-feira, 30 de abril de 2010
Footer Template - Adicionando Colspan
Fala, galera!!
Segue um post relâmpago com o código para adicionar um colspan no footer de sua gridview:
No evento ItemDatabound adicione o seguinte código:
If e.Row.RowType = DataControlRowType.Footer Then
e.Row.Cells(0).ColumnSpan = 2
e.Row.Cells(1).Visible = False
End If
Um abraço e até a próxima!!
Segue um post relâmpago com o código para adicionar um colspan no footer de sua gridview:
No evento ItemDatabound adicione o seguinte código:
If e.Row.RowType = DataControlRowType.Footer Then
e.Row.Cells(0).ColumnSpan = 2
e.Row.Cells(1).Visible = False
End If
Um abraço e até a próxima!!
domingo, 18 de abril de 2010
Removendo Acentuação
Fala, galera!!
Hoje vou postar um código simples, mas bastante útil para retirada de acentuação de uma string.
A essa altura do campeonato, não dá mais para escrever 50 linhas de código com "Replaces" para remover caracteres de acentuação, né?
Então, segue o código "inteligente":
Public Function RemoverAcentos(ByVal Valor As String) As String
Dim TextoNormalizado As String = Valor.Normalize(NormalizationForm.FormD)
Dim sbTexto As New StringBuilder
For i = 0 To TextoNormalizado.Length - 1
Dim C As Char = TextoNormalizado(i)
If (CharUnicodeInfo.GetUnicodeCategory(C) <> UnicodeCategory.NonSpacingMark) Then
sbTexto.Append(C)
End If
Next
Return sbTexto.ToString
End Function
Um abraço e até a próxima!!
Hoje vou postar um código simples, mas bastante útil para retirada de acentuação de uma string.
A essa altura do campeonato, não dá mais para escrever 50 linhas de código com "Replaces" para remover caracteres de acentuação, né?
Então, segue o código "inteligente":
Public Function RemoverAcentos(ByVal Valor As String) As String
Dim TextoNormalizado As String = Valor.Normalize(NormalizationForm.FormD)
Dim sbTexto As New StringBuilder
For i = 0 To TextoNormalizado.Length - 1
Dim C As Char = TextoNormalizado(i)
If (CharUnicodeInfo.GetUnicodeCategory(C) <> UnicodeCategory.NonSpacingMark) Then
sbTexto.Append(C)
End If
Next
Return sbTexto.ToString
End Function
Um abraço e até a próxima!!
Marcadores:
Acentos,
Acentuação,
Asp.net,
Remoço de Acentos
sábado, 10 de abril de 2010
Validando um GUID
Fala, galera!!
Dando sequência no assunto GUID.
De acordo com o exemplo citado no post anterior, o usuário recebe por email um link para ativar seu cadastro.
O código de ativação é um GUID.
Ao acessar a página de ativação é preciso verificar se o parâmetro informado na querystring é um GUID válido.
Essa validação é necessária por questões de segurança.
Segue o código de validação do GUID:
Private Function GuidEhValido(ByVal Valor as string) as Boolean
Try
Dim NovoGuid as System.Guid = New System.Guid(Valor)
return True
Catch ex as Exception
return False
End Try
O construtor da classe Guid possui uma sobrecarga que permite que se informe um parâmetro do tipo GUID.
Logo, para validar se o seu GUID é válido, basta instanciar a classe GUID passando esse parâmetro.
Se não ocorrer erro, GUID válido.
Se ocorrer erro, GUID inválido.
Um abraço e até a próxima!!
Dando sequência no assunto GUID.
De acordo com o exemplo citado no post anterior, o usuário recebe por email um link para ativar seu cadastro.
O código de ativação é um GUID.
Ao acessar a página de ativação é preciso verificar se o parâmetro informado na querystring é um GUID válido.
Essa validação é necessária por questões de segurança.
Segue o código de validação do GUID:
Private Function GuidEhValido(ByVal Valor as string) as Boolean
Try
Dim NovoGuid as System.Guid = New System.Guid(Valor)
return True
Catch ex as Exception
return False
End Try
O construtor da classe Guid possui uma sobrecarga que permite que se informe um parâmetro do tipo GUID.
Logo, para validar se o seu GUID é válido, basta instanciar a classe GUID passando esse parâmetro.
Se não ocorrer erro, GUID válido.
Se ocorrer erro, GUID inválido.
Um abraço e até a próxima!!
domingo, 28 de março de 2010
Criando um identificador único - GUID
Fala, galera!!
Continuando a série "Códigos da Vida".
Estive implementando um cadastro de usuários que necessita de uma confirmação por email para ativação do acesso. Coisa simples. Nada fora do trivial.
No entanto, precisava definir como seria feita a ativação do cadastro.
Não que esse seja um grande problema ou até mesmo um problema.
Mas era preciso definir com calma que informação seria enviada para o email do usuário.
Por questões de segurança, não posso enviar o código do usuário sem criptografar esta informação.
Isso porque na maioria (para não dizer em todos) dos sites o identificador do usuário é um código sequencial.
Desta forma, ficaria fácil um usuário malicioso e criativo achar N formas de prejudicar seu site.
Enviar esta informação criptografada também não é a melhor idéia, pois como a informação é enviada via querystring, alguns caracteres da criptografia podem gerar problemas, dependendo da criptografia utilizada.
A solução foi gerar um GUID utilizando a classe system.Guid.
Um Guid é um identificador único. Como o próprio nome já diz: Globally Unique Identifier
Veja como é fácil:
Dim Identificador as string = System.Guid.NewGuid.ToString
A string gerada será algo como: "91752d05-2274-4e56-9251-4bb4b5fccd6c"
Desta forma, não preciso expor nenhuma informação sensível do usuário e nenhum usuário malicioso conseguirá "adivinhar" um GUID válido.
Um abraço e até a próxima!!
Continuando a série "Códigos da Vida".
Estive implementando um cadastro de usuários que necessita de uma confirmação por email para ativação do acesso. Coisa simples. Nada fora do trivial.
No entanto, precisava definir como seria feita a ativação do cadastro.
Não que esse seja um grande problema ou até mesmo um problema.
Mas era preciso definir com calma que informação seria enviada para o email do usuário.
Por questões de segurança, não posso enviar o código do usuário sem criptografar esta informação.
Isso porque na maioria (para não dizer em todos) dos sites o identificador do usuário é um código sequencial.
Desta forma, ficaria fácil um usuário malicioso e criativo achar N formas de prejudicar seu site.
Enviar esta informação criptografada também não é a melhor idéia, pois como a informação é enviada via querystring, alguns caracteres da criptografia podem gerar problemas, dependendo da criptografia utilizada.
A solução foi gerar um GUID utilizando a classe system.Guid.
Um Guid é um identificador único. Como o próprio nome já diz: Globally Unique Identifier
Veja como é fácil:
Dim Identificador as string = System.Guid.NewGuid.ToString
A string gerada será algo como: "91752d05-2274-4e56-9251-4bb4b5fccd6c"
Desta forma, não preciso expor nenhuma informação sensível do usuário e nenhum usuário malicioso conseguirá "adivinhar" um GUID válido.
Um abraço e até a próxima!!
domingo, 28 de fevereiro de 2010
Asp.Net Dynamic Data - Ordenando e Definindo os campos para filtros de chave estrangeira
Fala, galera!!
Quando definimos um filtro cuja a origem é uma chave estrangeira o Dynamic Data gera uma combo.
Isto é definido pelo usercontrol ForeignKey.ascx que fica no diretório FilterTemplates.
Por padrão, o campo exibido na propriedade "Text" do dropdown é sempre o primeiro campo logo após a chave primária.
Mas como definir manualmente a propriedade "Text" de cada item da combo e a ordem com que os mesmos aparecerão?
Simples!
Basta adicionar o seguinte código no metadata da tabela origem da chave estrangeira. Ou seja, onde ela é a chave primária.
<DisplayColumn("Descricao", "Descricao", False)> _
<MetadataType(GetType(Evento_Metadata))> _
O código em negrito é o que deve ser adicionado logo acima da declaração do MetadataType.
Desta forma, seu Dropdownlist ou seu listbox exibirão o campo "Descricao" e serão ordenados pelo mesmo campo por ordem alfabética.
OBS: No exemplo acima utilizei o relacionamento entre uma tabela chamada "Log" e outra chamada "Evento" e inseri um filtro por "Evento" na tabela de Log.
Um abraço e até a próxima!!
Quando definimos um filtro cuja a origem é uma chave estrangeira o Dynamic Data gera uma combo.
Isto é definido pelo usercontrol ForeignKey.ascx que fica no diretório FilterTemplates.
Por padrão, o campo exibido na propriedade "Text" do dropdown é sempre o primeiro campo logo após a chave primária.
Mas como definir manualmente a propriedade "Text" de cada item da combo e a ordem com que os mesmos aparecerão?
Simples!
Basta adicionar o seguinte código no metadata da tabela origem da chave estrangeira. Ou seja, onde ela é a chave primária.
<DisplayColumn("Descricao", "Descricao", False)> _
<MetadataType(GetType(Evento_Metadata))> _
O código em negrito é o que deve ser adicionado logo acima da declaração do MetadataType.
Desta forma, seu Dropdownlist ou seu listbox exibirão o campo "Descricao" e serão ordenados pelo mesmo campo por ordem alfabética.
OBS: No exemplo acima utilizei o relacionamento entre uma tabela chamada "Log" e outra chamada "Evento" e inseri um filtro por "Evento" na tabela de Log.
Um abraço e até a próxima!!
Marcadores:
Asp.Net Dynamic Data,
Chave Estrangeira,
Foreign Key,
Ordenando Filtros
sábado, 27 de fevereiro de 2010
ASP.Net Dynamic Data - Inserindo Regras de Negócio
Fala, galera!!
Há alguns meses comecei a estudar o Asp.Net Dynamic Data e escrevi aqui um post sobre como aplicar regras de negócio nos formulários de inclusão/alteração de dados.
Confesso que não era a melhor prática, mas resolvia. :)
Estava no início do estudo da ferramenta e, por ser uma ferramenta nova, ainda não existiam muitos tutoriais na web.
Mas agora, vamos a forma mais correta, rápida e simples de se implementar uma regra de negócio no Asp.Net Dynamic Data.
Como exemplo, vou utilizar uma tabela de parametrização das mensagens de uma ferramenta que desenvolvi.
Ao abrir o arquivo "designer.vb" do meu arquivo dbml, vou até a classe "ParametrosDeSistema" que é o nome da minha tabela e procuro pela Region "Extensibility Method Definitions". Veja a imagem abaixo:
A imagem acima mostra uma série de métodos parciais que podem ser implementados dentro da classe de metadados.
Para cada propriedade da sua classe existe um método "OnChanging" e "OnChanged".
Vamos agora implementar uma regra onde iremos definir que o atributo TempoDuracaoToken não pode receber valor menor do que 3.
Dentro de nosso arquivo de metadados iremos inserir o código abaixo:
Simples, não?
Um abraço e até a próxima!!
Há alguns meses comecei a estudar o Asp.Net Dynamic Data e escrevi aqui um post sobre como aplicar regras de negócio nos formulários de inclusão/alteração de dados.
Confesso que não era a melhor prática, mas resolvia. :)
Estava no início do estudo da ferramenta e, por ser uma ferramenta nova, ainda não existiam muitos tutoriais na web.
Mas agora, vamos a forma mais correta, rápida e simples de se implementar uma regra de negócio no Asp.Net Dynamic Data.
Como exemplo, vou utilizar uma tabela de parametrização das mensagens de uma ferramenta que desenvolvi.
Ao abrir o arquivo "designer.vb" do meu arquivo dbml, vou até a classe "ParametrosDeSistema" que é o nome da minha tabela e procuro pela Region "Extensibility Method Definitions". Veja a imagem abaixo:
A imagem acima mostra uma série de métodos parciais que podem ser implementados dentro da classe de metadados.
Para cada propriedade da sua classe existe um método "OnChanging" e "OnChanged".
Vamos agora implementar uma regra onde iremos definir que o atributo TempoDuracaoToken não pode receber valor menor do que 3.
Dentro de nosso arquivo de metadados iremos inserir o código abaixo:
Estou supondo que você já sabe o que é um arquivo de metadados.
Agora veja o que acontece quando tentamos inserir um valor que não atenda nossa regra de negócio:
Simples, não?
Um abraço e até a próxima!!
Marcadores:
Asp.Net Dynamic Data,
Regras de negócio
Assinar:
Postagens (Atom)