Comentários

Comment RSS

Jun
03

Primeiramente, PostBack é quando uma requisição é feita para executar códigos no, normalmente ocorreu quando clica em um botão.

Há momentos que é preciso fazer isso via JavaScript. Já vi método usando POG, onde é criado um botão um evento para esse botão, e então fazer com que esse botão não apareça e simular via JavaScript o clique.

Então como é a maneira correta?

A maneira correta é usar o método __doPostBack que toda pagina aspx possui. A sintax é:

__doPostBack(eventTarget, eventArgument)

Onde eventTarget é a propriedade UniqueID do controle que executa o PostBack e o eventArgument é algum argumento que se deseja.

Como não vamos chamar o método via controle basta então passar a pagina no lugar do controle (a pagina também é um controle). Exemplo:

__doPostBack(__Page, ‘meuArgumento’)

Agora como que sei que o PostBack foi realizado pela minha chamada no JavaScript?

Fácil basta verificar se o seu argumento passado está em Request["__EVENTARGUMENT"]. Exemplo:

protected void Page_Load(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(Request["__EVENTARGUMENT"]) && 
        Request["__EVENTARGUMENT"] == "meuArgumento")
    {
        //faça seu codigo
    }
}

Eu estou usando UpdatePanel, e minha página esta sendo recarregada. Como faço para usar com Ajax?

Também é fácil, alem de passar o controle __Page, basta passa o UniqueID do UpdatePanel. Exemplo:

__doPostBack("<%= UpdatePanel1.UniqueID %>", "meuArgumento")

É isso ai pessoal, sem POG, simples e funcional!

Currently rated 3.0 by 2 people

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Mar
11

eBook ASP .NET MVC

Publicado às: 08:14 Comments (3)

Ae pessoal, acabou de sai um eBook da equipe de desenvolvimento do ASP .NET MVC e estão lançando 185 páginas do livro como um download gratuito em pdf.

Segue os links para quem quizer baixa e saber mais:

 

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ASP.NET

Tags: ,

Feb
02

Você esta vendo muitas matérias sobre ASP .NET MVC mas ainda não sabe por onde começar?

No próprio site oficial, existem vários tutorias para você aprender e tirar o Maximo de aproveito do Framework. Para cada tutorial você pode escolher em qual linguagem quer ver (C#, ou VB.NET)

Segue a lista que eu separei:

  1. Criando um aplicativo de Filme usando Banco de Dados:
    Stephen Walther desenvolve uma aplicação do início ao fim em ASP.NET MVC. Este tutorial é uma ótima introdução para as pessoas ques estão querendo aprender ASP.NET MVC Framework e que querem ter uma noção do processo de construção.
  2. Entendendo: Models, Views e Controllers:
    Confuso sobre Models, Views e Controllers? Neste tutorial, Stephen Walther introduz as diferentes camadas de uma aplicação ASP.NET MVC.
  3. Entendendo: Controllers, Controller Actions, and Action Results:
    Stephen Walther introduz os Controllers do ASP.NET MVC. Você aprenderá a criar novos controllers e retornar resultados diferentes para cada tipos de ação.
  4. Resumo sobre ASP.NET MVC Routing:
    Stephen Walther mostra como o ASP.NET MVC mapeia os request do Navegador.
  5. Prevenir ataques de JavaScript Injection:
    Este tutorial explica como você pode facilmente derrotar estes tipos de ataques codificando seu HTML.
  6. Criando HTML Helpers Customizado:
    O objetivo deste tutorial é mostrar como você pode criar HTML Helpers personalizada que você pode usar no seu projeto MVC. Você pode reduzir a quantidade de digitação de tags HTML.
  7. Exibindo uma tabela de banco de dados:
    Neste tutorial, demonstrar dois modos de exibição de um conjunto de registos de dados. Demonstra dois métodos de formatação de registro em uma tabela HTML.
  8. Autenticando usuários com Forms Authentication:
    Aprenda a usar o atributo [Authorize] para proteger determinadas páginas MVC na sua aplicação. Você aprenderá como usar o "Web Site Administration Tool" para criar e gerenciar users e roles.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Jan
17
Nesse post, JD Conley fala, em 10 razoes, o quando não gosta do modelo de desenvolvimento proposto pelo WebForms, e é claro, puxa o saco para o ASP.NET MVC. Algumas criticam já são comuns de se ver em muitos blogs como ViewState, Ciclo de vida. Reclama por ser tão abstrato, e você acaba de esquecendo o que é programar para Web, coisas como, você não precisa tanto de JavaScript e até mesmo, de um conhecimento aprofundando em HTML ou qualquer outra "tecnologia para web". E ainda, diz como é bom programar para em ASP.NET MVC e como faz se lembra de quando programou o seu primeiro site.

Então segue minhas duvidas.
  1. HTML foi inicialmente desenvolvido para criar páginas, sendo muito pobre para se criar sistema, deve-se continuar nesse caminho de formatar o HTML em foco para páginas?
  2. É realmente possível termos uma abstração de HTML e principalmente de JavaScript, a um ponto que não é necessário a mais recorrê-lo?


Nesse outro post, LeeDumond critica JD Conley e fala também em 10 razoes o quando é bom programar em Webforms. Também algumas itens comuns da discussão Webforms e MVC são citados, como: MVC não tem suporte a tema e que ViewState não é um monstro se você souber dominá-lo.

Refletindo, continuei tendo a mesma a mesma conclusão sobre Webforms e MVC. Acredito que WebForms esta muito maduro, e é excelente para se desenvolver sistema. MVC está muito legal para se desenvolver websites já que você não precisa de uma gama de controle.
Quando programa em MVC me sinto mais "Heavy User", por ter que quebrar a cabeça com alguns códigos JavaScript. Mas isso me gera outra dúvida, é bom ter que quebrar a cabeça, ou seja, você tem que entregar projetos e o tempo é sempre curto!

E vocês o que acham Webforms ou MVC?

 

Digamos que você também é fraco no inglês como eu, então veja a versão traduzida, garanto que a leitura vale à pena!

Links:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Nov
06

Apresento a vocês a comunidade Desenvolvendo para web usando o Visual Studio 2008, bem o nome é até grande, mas porquê foi criada em base no livro,  Na comunidade tem muitos MSPs, MVPs e vários profissionais da área.

Ainda não conheci o livro, mas conheço de perto o trabalho de dois dos autores, e aposto que devem ter feito um bom trabalho: 

Participe da comunidade clicando abaixo:

Visite Desenvolvendo para web usando o Visual Studio 2008

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Aug
29

Asp ,NET MVC Preview 5

Publicado às: 06:24 Comments (0)

A pouco mais de um mês eu divulguei aqui no blog o MVC preview 4, hoje saiu o preview 5. Isso prova que o framework está sendo cada vez mais dedicado e que não vai ser apenas uma "moda passageira" como muitos imaginam.

Todas as novidades do preview 5 pode ser visto aqui.
http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aspnet&DownloadId=42478

Quem quiser baixá-lo, o link é esse:
http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=aspnet&ReleaseId=16775 

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ASP.NET

Tags:

Aug
13

Todos sabem que os controles do ASP .NET são convertidos em tags HTML e alguns chegam a ter alguns javascripts.

É uma maravilha, um simples controle se torna um monte de HTML e facilitando a sua vida!

No final da renderização da página, algumas centenas de tags são criadas e você deve ter reparado que há vários espaços em branco entre elas, espaços esse que só servem para identar e formatar código, para o usuário final podemos considerado um "lixo".

A otimização que está sendo proposta é remover esses "lixos", e assim, podemos diminuir alguns KBi e aumentar a velocidade para baixa a página.

protected override void Render(HtmlTextWriter writer) 
{ 
#if !DEBUG 
if (IsPostBack) 
base.Render(writer); 
else 
{ 
StringWriter stringWriter = new StringWriter(); 
HtmlTextWriter interceptedHtmlWriter = new HtmlTextWriter(stringWriter, " "); 
base.Render(interceptedHtmlWriter); 
string interceptedHtml = stringWriter.ToString(); 
interceptedHtml = Regex.Replace(interceptedHtml, ">\\s+<", "><"); 
writer.Write(interceptedHtml); 
} 
#else 
base.Render(writer); 
#endif 
} 

Repare que a otimização não será executada em modo Debug, isso servirá para não atrapalhar o seu desenvolvimento, já que, algumas vezes será preciso ver o código gerado para solucionar algum problema.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ASP.NET

Tags:

Jul
22

Muitas vezes não conseguimos forçar um erro que um cliente nos relatou, mas e quando acontece, você vai dizer que a aplicação não tem erro pelo simples fato de você não ter conseguido provocá-lo? Vai ser sua palavra contra a dele e sem dizer que o cliente visualizou o erro.

Esse não é o único caso que precisamos armazenar os erros ocorridos. Quando implantamos um sistema, inúmeros erros aparecem e anotá-los em um “pedaço de papel” para depois chegar ao trabalho e arrumá-los, com certeza não é a melhor opção!

Em busca de uma maneira de resolver esse problema, encontrei um artigo no Macoratti.net. A idéia seria usar o evento Application_Erro do Global.asax, e então pegar os erros ocorridos pelo método Server.GetLastError().

Muito bom, funcionou perfeitamente por um bom tempo. Mas então apareceu outro probleminha. Precisei criar outra aplicação web, e como posso aproveitar o código feito? Simples, o código para armazenar o erro estava no meu Framework, agora bastava chamar o mesmo método no evento da nova aplicação. Mas não achei uma solução elegante, mas não me preocupei e toquei projeto!

Nessa semana navegando em alguns blogs gringo encontrei no blog do .Net Scraps uma solução que essa sim, eu achei elegante. Ela trabalha com HttpModule. Ok, mas por que ela é elegante? Porque você não precisa codificar para usá-la, pode adicionar e remover o modulo no web.config na hora que quiser. E também, no IIS 7 você pode criar seus módulos e adicionar em qualquer aplicação, ou seja, você pode usá-la ate em aplicações que não são sua!

A implementação vocês podem ver no blog .Net Scraps, mas eu dei uma modificada básica e vou posta aqui para quem quiser discutir comentar ou simplesmente da Ctrl+C Ctrl+V!

A diferença é que, ela grava os erros em arquivo XML, e também armazena os InnerException.

 

using System; 
using System.Configuration; 
using System.IO; 
using System.Text; 
using System.Web; 
using System.Xml; 
namespace Empresa.Framework.Web.ModulosHttp 
{ 
///  
/// Capturar erros ocorridos no sistema 
/// Referencia: http://www.dotnetscraps.com/dotnetscraps/post/ASPNETHow-to-write-error-messages-into-a-text-file-using-a-simple-httpModule.aspx 
///  
public class CapturarErros : IHttpModule 
{ 
#region IHttpModule Members 
///  
/// Dispose de IHttpModule 
///  
public void Dispose(){} 
///  
/// Init de IHttpModule 
///  
/// Context 
public void Init(HttpApplication context) 
{ 
context.EndRequest += new EventHandler(EndRequest); 
} 
#endregion 
///  
/// Evento EndRequest 
///  
/// Sender 
/// evento 
protected void EndRequest(object sender, EventArgs e) 
{ 
HttpApplication app = (HttpApplication)sender; 
HttpContext context = app.Context; 
if (app.Context.AllErrors != null) 
GravarErro(app.Context.AllErrors, context.Request); 
} 
#region LerArquivoErro 
///  
/// Criar o arquivo de erro caso não exista 
///  
protected void LerArquivoErro(XmlDocument xmlDoc, string arquivoErro) 
{ 
if (!File.Exists(arquivoErro)) 
{ 
string diretorio = Path.GetDirectoryName(arquivoErro); 
if (!Directory.Exists(diretorio)) 
Directory.CreateDirectory(diretorio); 
using (XmlTextWriter xmlWriter = new XmlTextWriter(arquivoErro, Encoding.UTF8)) 
{ 
xmlWriter.Formatting = Formatting.Indented; 
xmlWriter.WriteStartDocument(); 
xmlWriter.WriteComment("Exceções ocorridas no sistema"); 
xmlWriter.WriteStartElement("excecoes"); 
xmlWriter.WriteEndElement(); 
} 
} 
xmlDoc.Load(arquivoErro); 
} 
#endregion 
#region GravarErro 
///  
/// Gravar as exception em xml 
///  
/// Exceptions ocorridas 
/// Request 
protected void GravarErro(Exception[] listaException, HttpRequest request) 
{ 
string arquivoErro = String.Format(ConfigurationManager.AppSettings["Erro-Diretorio"], 
request.PhysicalApplicationPath) + "\\Exception.xml"; 
XmlDocument xmlDocErro = new XmlDocument(); 
LerArquivoErro(xmlDocErro, arquivoErro); 
foreach (Exception exception in listaException) 
xmlDocErro.DocumentElement.AppendChild(CriarXmlErro(xmlDocErro, exception, request)); 
xmlDocErro.Save(arquivoErro); 
} 
#endregion 
#region CriarXmlErro 
///  
/// Criar xml da exception 
///  
/// Documento XML 
/// Exception 
/// Request 
/// No Xml criado 
protected XmlNode CriarXmlErro(XmlDocument xmlDoc, Exception exception, HttpRequest request) 
{ 
XmlNode no = xmlDoc.CreateElement(exception.GetType().Name); 
XmlNode noHora = xmlDoc.CreateElement("hora"); 
noHora.AppendChild(xmlDoc.CreateTextNode(DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss"))); 
no.AppendChild(noHora); 
XmlNode noPagina = xmlDoc.CreateElement("pagina"); 
noPagina.AppendChild(xmlDoc.CreateTextNode(request.FilePath)); 
no.AppendChild(noPagina); 
CriarNosBasicosException(xmlDoc, no, exception); 
return no; 
} 
#region CriarNosBasicosException 
///  
/// Criar estrutura basica de nos de uma exception 
///  
/// Documento XML 
/// No Pai 
/// Exception 
protected void CriarNosBasicosException(XmlDocument xmlDoc, XmlNode noPai, Exception exception) 
{ 
XmlNode noMensagem = xmlDoc.CreateElement("mensagem"); 
noMensagem.AppendChild(xmlDoc.CreateTextNode(exception.Message)); 
noPai.AppendChild(noMensagem); 
XmlNode noStackTrace = xmlDoc.CreateElement("stackTrace"); 
noStackTrace.AppendChild(xmlDoc.CreateTextNode(exception.StackTrace)); 
noPai.AppendChild(noStackTrace); 
AdicionarInnerException(xmlDoc, noPai, exception.InnerException); 
} 
#region AdicionarInnerException 
///  
/// Adicionar InnerException no Xml de Erro 
///  
/// Documento Xml 
/// No Pai 
/// Exception 
protected void AdicionarInnerException(XmlDocument xmlDoc, XmlNode noPai, Exception exception) 
{ 
if (exception != null) 
{ 
XmlNode noInnerException = xmlDoc.CreateElement(exception.GetType().Name); 
CriarNosBasicosException(xmlDoc, noInnerException, exception); 
noPai.AppendChild(noInnerException); 
} 
} 
#endregion 
#endregion 
#endregion 
} 
} 

 

Currently rated 1.0 by 1 people

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Jul
17

Acabou de sair o ASP .NET MVC Preview 4, ele está hospedado no Codeplex, quem quiser baixá-lo é só entrar no aqui.

Algumas novidades do Preview 4 são:

  • Melhorias nos interceptores do filtro
  • Filtros de Cachê
  • Filtros de controles de erros
  • Filtros de autorizações
  • Novas classes de contas e autenticações
  • Melhoria na coleção TempData da classe Controller
  • Extensão ao controle de AJAX
No Blog do Scott Hanselman`s (esse é o cara), tem esse artigo mostrando como usar os novos filtros, que está antenado no ASP .NET MVC não pode deixa de ler.

Se você ainda não conhece, ou está começando, existem ótimos artigos, em português.

Na MSDN Magazine tem um artigo do Chris Tavares, que alem de apresentar o ASP .NET MVC, ele passa um pouco de suas dificuldade que encontrava para programar para Web. O artigo também serve para uma leve comparação entre WebForms e MVC. Link: Criando aplicativos Web sem Web Forms

No Linha de Código também tem um artigo do Ricardo Oneda. É um artigo mais prático. Link: Desvendando o ASP.NET MVC Framework.

No site do ASP .NET MVC tem vários vídeos que ensina como começar, técnicas avançadas, fazer classes de teste e ótimos artigos. Mesmo para que não manja de Inglês vale a pena a ler.

Qualquer duvida deixe um comentário, que tentarei responder.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ASP.NET

Tags: ,

Jul
15

Pasta do ASP.NET 2.0

Publicado às: 11:11 Comments (0)

Muitos que iniciam em ASP. NET tem dúvidas sobre as pastas padrões do ASP,NET. Abaixo tem uma breve descrição de cada uma delas.

App_Code:
Pasta para armazenar as classes, enum. Bom lugar para colocar as classes Util.

App_Themes
Uma nova funcionalidade do ASP.NET 2.0 é que ele suporta temas. Nessa pasta deverá conter os arquivos stylesheet(.css), skins e imagens do tema.

App_Data
Responsável para armazenar arquivos de dados, como por exemplo, mdf e xml.

App_GlobalResources
Local onde deverá armazenar os arquivos de Resources (.resx). Muito util para criar aplicações em multi-línguas.

App_LocalResources
Armazenar Resources locais.

App_WebReferences
Armazenar referencia de WebServices.

App_Browsers
Armazenar arquivos XML usando para configurar características especiais para cada tipo de navegador.


Referência: Syed Akbar Ali

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ASP.NET

Tags:

Designer Original Binary Bonsai | Adaptado para MagoDigital | BlogEngine.NET