This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
ASP.NET 4.0: ViewStateMode... dándole más control sobre ViewState!
Thursday, 18 February 2010
ViewState es un dolor... ¡ahí, lo he dicho! Lo que causa más dolor con ViewState es el hecho de que la gente lo usa mal mucho, dejándolo habilitado para cada control en una página cuando de hecho solo lo necesitas para ese control que realmente necesita persistir en su contenido a la página siguiente. Dave Reed un desarrollador en el equipo de ASP.NET ha escrito un post realmente épico en «Entender verdaderamente el estado de visión», y antes de que leas lo que viene a continuación, deberías irte y leer eso primero
¿De vuelta?
Ok, bueno ahora usted entiende que usted debe utilizar sólo ViewState para los controles que realmente lo necesitan. Pero hay un problema... lo que realmente le gustaría hacer es desactivar ViewState para una página completa y luego sólo lo encienda de nuevo para los controles que lo necesitan, Lo siento pero tengo algunas malas noticias, usted no puede hacer esto en cualquier versión de ASP.NET hasta e incluyendo ASP.NET 3.5 SP1. También tengo algunas buenas noticias ... usted será capaz de hacer esto cuando ASP.NET 4.0 sale! La pequeña propiedad mágica en todos los controles de ASP.NET que le permite hacer esto se llama ViewStateMode. (Por cierto, esto fue Dave’s idea y las muestras a continuación son una estafa desvergonzada de él :-))
En pocas palabras, ViewStateMode tiene 3 valores posibles, Activado, Discapacitado y HerenciaQue son bastante obvios en su función...Activado activa la función de guardar el estado de vista para ese control (o cualquier control de hijo que se establezca como «heredero» o que no tenga establecido nada), Discapacitado Lo apaga de nuevo, y Herencia dice ‘usar cualquier cosa que mi padre está dispuesto a hacer’. ¡Eso es realmente todo lo que hay que hacer!
Aquí está una muestra muy simple de cómo esto realmente funciona:
<form id="form1" runat="server">
<script runat= “servidor”>
vacío de anulación protegido OnLoad(EventArgs e) {
si (!IsPostBack) {
label1.Texto = label2.Texto = "[DynamicValue]";
}
base.OnLoad(e);
}
</script>
<asp:PlaceHolder ID="PlaceHolder1" runat="servidor" ViewStateMode="Desactivado">
Desactivado: <asp:Label ID="label1" runat="server" Texto="[Valor declarado]" /><br />
<asp:PlaceHolder ID="PlaceHolder2" runat="server" ViewStateMode="Enabled">
Activado: <asp:Label ID="label2" runat="server" Texto="[Valor declarado]" />
</asp:PlaceHolder>
</asp:PlaceHolder>
<h />
<asp:botón ID="Button1" runat="servidor" Texto="Postback" />
Como puede ver en esta muestra, estamos deshabilitando ViewState para el control PlaceHolder1, la etiqueta de hijo1 hereda esta propiedad (como por defecto Inherit) y por lo tanto no guarda ViewStateEn PlaceHolder2 establecemos ViewStateMode a ‘Enabled’, lo que lleva a la etiqueta2 heredando esta propiedad y, por lo tanto, salva ViewStateEn la primera página cargamos ambas etiquetas a la salida del texto [DynamicValue]
El efecto de todo esto es que, cuando la página carga por primera vez se ven las etiquetas renderizadas de la siguiente manera:
Desactivado: [DynamicValue]
Activado: [DynamicValue]
Pero, haz un PostBack y verás:
Desactivado: [Valor declarado]
Activado: [DynamicValue]
Como es de esperar, la primera etiqueta no ha conservado el valor que establecemos en ViewState ¡la segunda etiqueta tiene!
Lo que es realmente genial es el hecho de que también se puede hacer esto:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" ViewStateMode="Desactivado" %>
Recuerde, en WebForms Page es sólo otro control... actúa como el control padre para cada otro control en la página. Esto significa que ningún control guardará ViewState a menos que establezca ViewStateMode a Habilitado para ese control o un control más allá de su jerarquía de control (así que, un gran uso sería para ContentPlaceHolders en MasterPages...).
¡Te dije que era simple!