Академический Документы
Профессиональный Документы
Культура Документы
Pgina 1 de 3
Se voc executar a pgina e clicar uma , duas , trs ,... vezes no boto - Converter para Polegadas - vai perceber que o contador no sofrer alteraes , sempre ir exibir o valor igual a 1 . Porque ? Por que a pgina recriada a cada solicitao e a varivel tambm recriada e tudo comea do 'zero' a cada solicitao. Ento como resolver o problema ???
http://www.macoratti.net/vbn_wbf2.htm
11/11/2013
Pgina 2 de 3
Se voc pensou em armazenar a varivel na memria do servidor , considere que em um ambiente com milhares de variveis ( e isto no difcil de ocorrer na internet) a memria do servidor iria se esgotar e o desempenho vai ser afetado. E agora ? Para resolver este problema podemos usar o recurso , explicado acima , ele chamado : State Bag ; e permite a uma pgina ASP.NET restaurar automaticamente o contedo dos controles usados na pgina. Vejamos como fica o cdigo usando o State Bag: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim polegadas As Single Dim contador As Integer polegadas = Val(txtmetros.Text) / 0.0256 lblresultado.Text = polegadas & " polegadas " contador = CType(ViewState("contador"), Integer) contador = contador +1 lblacessos.text = contador.ToString() & " acessos a rotina de converso " ViewState("contador") = contador End Sub Como funciona ? 1 - contador = CType(ViewState("contador"), Integer) Esta linha de cdigo recupera o valor da varivel contador armazenada no State Bag (ViewState("contador"). 2- ViewState("contador") = contador Esta linha de cdigo cria o item contador na State Bag , pois cada item na State Bag indexado por um nome , e , se ele no existe , ser criado da primeira vez. Pronto !! ao executar a pgina e clicar no boto para converso veremos exibido o nmero de vezes que a rotina foi acessada. Beleza ??? Mas nem tudo um mar de rosas , embora voc possa usar este recurso para o formulrio Web Form atual , se o usurio navegar para outro formulrio Web Form teremos que usar outro mtodo para passar as informaes entre as pginas(veremos como fazer isto em outro artigo) , ou seja , o State Bag s funciona para o formulrio atual. Alm disto se voc abusar deste recurso a saida HTML onde o campo oculto da State Bag armazenado pode tornar a transmisso da pgina lenta. Para terminar este artigo terico mas fundamental para que voc compreenda os conceitos bsicos relacionados com ASP.NET vou falar da propriedade Page.IsPostBack Quando a pgina viaja do cliente para o servidor e retorna do servidor para o cliente dizemos , ou melhor os gringos dizem , que ocorreu um round-trip (chic no mesmo..). Ento quando ocorre um round-trip.(pronuncia-se : rund-trip) ?? Um round-trip ocorre toda vez que a pgina solicitada ou quando ocorre um POST (envio) de formulrio. Pois bem , para saber qual a primeira vez em que a pgina foi solicitada ou se ocorreu um POST usamos a propriedade .IsPostBack. Page.IsPostBack retorna um valor boleano ( True ) se a origem for um POST e retorna um ( False ) se for a primeira execuo da pgina. Com isto em mente podemos usar o evento Load_Page no caso do exemplo anterior para obter o mesmo resultado. Veja como ficou o cdigo: Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then ViewState("contador") = 1 Else ViewState("contador") = CInt(ViewState("contador")) + 1 End If lblacessos.Text = ViewState("contador") & " acessos rotina de converso" End Sub Como funciona ? Verificamos se a pagina foi solicitada diretamente sem um clique de boto em : If Not Page.IsPostBack , e ento atribuimos o valor inicial igual a 1 ao State Bag. Depois s incrementar o contador , pois a cada clique o valor para Page.IsPostBack ser sempre igual a True. Executando a pgina e clicando algumas vezes no boto de converso teremos:
http://www.macoratti.net/vbn_wbf2.htm
11/11/2013
Pgina 3 de 3
Por enquanto s isto . Em breve novos artigos sobre ASP.NET , aguarde... Referncias: Seo Seo Seo Super Super VB .NET do Site Macoratti.net C# do site Macoratti.net ASP .NET do site Macoratti.net DVD .NET - A sua porta de entrada na plataforma .NET DVD Vdeo Aulas - Vdeo Aula sobre VB .NET, ASP .NET e C# Jos Carlos Macoratti
http://www.macoratti.net/vbn_wbf2.htm
11/11/2013