Herramientas de usuario

Herramientas del sitio


sp:aspnet

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
sp:aspnet [2009/08/15 19:34]
alfred
sp:aspnet [2020/05/09 09:25] (actual)
Línea 190: Línea 190:
 === GAC === === GAC ===
 Como toda aplicación en .NET, las creadas con aspnet pueden acceder a los ensamblados ubicados en la //Global Assembly Cache//​. ​ Como toda aplicación en .NET, las creadas con aspnet pueden acceder a los ensamblados ubicados en la //Global Assembly Cache//​. ​
 +
  
  
Línea 212: Línea 213:
 En el web.config podemos definir el tiempo que se mantiene la sesión activa (por defecto 20 minutos): En el web.config podemos definir el tiempo que se mantiene la sesión activa (por defecto 20 minutos):
 <code xml> <code xml>
-<sessionState +<configuration>​ 
-  timeout="​40"​ +   <​system.web>​ 
-/>+      <​sessionState ​timeout="​40"​ />
 </​code>​ </​code>​
 Si las cookies no están activas, la sesión puede ser tratada a partir de un identificador en la URL, para ello agregaremos lo siguiente al web.config: Si las cookies no están activas, la sesión puede ser tratada a partir de un identificador en la URL, para ello agregaremos lo siguiente al web.config:
Línea 349: Línea 350:
  
 ===== Algunos elementos básicos ===== ===== Algunos elementos básicos =====
 +
  
 ==== Response ==== ==== Response ====
Línea 357: Línea 359:
 </​code>​ </​code>​
  
- +=== Otros === 
- +  * ''​Clear'':​ Elimina lo que se ha escrito hasta ahora. 
- +  * ''​ContentType'':​ Indica el tipo de contenido que se envia para que según este sea tratado por el navegador.
- +
- +
- +
  
 ==== Clase Page ==== ==== Clase Page ====
Línea 526: Línea 524:
  
   * Esquema del ciclo de vida página: {{sp:​asp:​ct.png?​10|Esquema}}   * Esquema del ciclo de vida página: {{sp:​asp:​ct.png?​10|Esquema}}
 +
 +
 +
  
 ==== Cookies ==== ==== Cookies ====
Línea 557: Línea 558:
   Response.Write(cookie.Name + ":"​ + cookie.Value + "<​br />"​);​   Response.Write(cookie.Name + ":"​ + cookie.Value + "<​br />"​);​
 } }
 +</​code>​
 +
 +=== Modificar y eliminar las cookies ===
 +Podemos cambiar el valor de una cookie a partir del método ''​Response.Cookies.Set'':​
 +<code csharp>
 +HttpCookie modificaCookie = Request.Cookies.Get("​subgurim"​);​
 +modificaCookie.Expires = DateTime.Now.AddDays(7);​
 +modificaCookie.Value = "​hi!";​
 +Response.Cookies.Set(modificaCookie);​
 +</​code>​
 +O eliminarlas a partir del ''​Response.Cookies.Remove'':​
 +<code csharp>
 +Response.Cookies.Remove("​subgurim"​);​
 +</​code>​
 +O eliminarlas todas:
 +<code csharp>
 +Response.Cookies.Clear();​
 +</​code>​
 +Aunque si existen problemas para la eliminación:​
 +<code csharp>
 +HttpCookie c1 = Request.Cookies["​userName"​];​
 +if (c1 != null)
 +{
 +    Request.Cookies.Remove("​userName"​);​
 +    c1.Expires = DateTime.Now.AddDays(-10);​
 +    c1.Value = null;
 +    Response.SetCookie(c1);​
 +}
 +</​code>​
 +=== Cookies con varios valores ===
 +Para crear una cookie con varios valores lo haremos como si fuese un array multidimensional. \\ 
 +Para asignarla lo haremos así...
 +<code csharp>
 +Response.Cookies["​userInfo"​]["​userName"​] = "​patrick";​
 +Response.Cookies["​userInfo"​]["​lastVisit"​] = DateTime.Now.ToString();​
 +Response.Cookies["​userInfo"​].Expires = DateTime.Now.AddDays(1);​
 +</​code>​
 +O así:
 +<code csharp>
 +HttpCookie addMultiCookie = new HttpCookie("​subgurimMultidimensional"​);​
 +for (int i = 0; i < 10; i++) {
 +  addMultiCookie.Values.Add(i.ToString(),​ "​Elemento " + i.ToString());​
 +  addMultiCookie[i.ToString()] = "​Elemento " + i.ToString();​
 +}
 +Response.Cookies.Add(addMultiCookie);​
 +</​code>​
 +Y para recogerla de la siguiente forma:
 +<code csharp>
 +HttpCookie cogeMultiCookie = Request.Cookies.Get("​subgurimMultidimensional"​); ​  
 +string valorCualquiera = cogeMultiCookie.Values.Get("​5"​);​
 </​code>​ </​code>​
  
 ===== La interface de usuario ===== ===== La interface de usuario =====
 +
  
  
Línea 639: Línea 691:
 } }
 </​code>​ </​code>​
 +Pero lo más aconsejable,​ si utilizamos hojas de estilos (css) es anidar los estilos de la siguiente forma: 
 +<code css> 
 +table.taula { ... } 
 +table.taula td { ... } 
 +table.taula th  { ... } 
 +table.taula tr.evenCell ​ { ... } 
 +table.taula tr.oddCell { ... } 
 +table.taula td.evenCell { ... } 
 +table.taula td.oddCell { ... } 
 +table.taula td.littleEvenCell { ... } 
 +table.taula td.littleOddCell { ... } 
 +</​code>​
  
 También podemos definir los estilos a partir de código: También podemos definir los estilos a partir de código:
Línea 717: Línea 780:
       Label.skin       Label.skin
 </​code>​ </​code>​
 +
 +
 +
  
  
Línea 765: Línea 831:
   * Utilizar URL relativas de aplicación,​ donde ''​~''​ corresponde a la raíz de esta, algo así: ''<​asp:​Image ImageUrl="​~/​images/​banner.gif"​ runat="​server"​ />''​.   * Utilizar URL relativas de aplicación,​ donde ''​~''​ corresponde a la raíz de esta, algo así: ''<​asp:​Image ImageUrl="​~/​images/​banner.gif"​ runat="​server"​ />''​.
  
-La directiva ''​MasterType'' ​especifica la ruta de la página maestra:+Las Master Pages también pueden contener otras Master Pages, por ejemplo, podríamos tener una Master Page que represente la cabecera/​pie de página y la navegación global del sitio, y después Master Pages separadas que deriven de esta para definir los aspectos de las diferentes sub-secciones del sitio.  
 + 
 +=== Comunicación entre la MasterPage y el contenido === 
 +Cuando utilizamos la directiva ''​MasterType'' ​en un WebForm estamos especificando el tipo del que será la página maestra. Esto significa que al acceder a la propiedad ''​Master''​ de la ''​Page''​ tendremos también acceso a sus propiedades. Si utilizamos MasterPages anidadas no podremos acceder a los datos de la raíz desde el WebForm, pero como lo que realmente estamos indicando es el tipo podemos hacer que las MasterPages hereden de un tipo concreto y en la directiva ''​MasterType''​ indicar ese.
 <​code>​ <​code>​
 <%@ MasterType VirtualPath="​Site.master"​ %> <%@ MasterType VirtualPath="​Site.master"​ %>
Línea 775: Línea 844:
 AdRotator ad = (AdRotator)Master.FindControl("​MyAdRotator"​);​ AdRotator ad = (AdRotator)Master.FindControl("​MyAdRotator"​);​
 </​code>​ </​code>​
 +Para comunicar desde la MasterPage al contenido lo que haremos será lanzar un evento.
  
-Las Master Pages también pueden contener otras Master Pages, ​por ejemplopodríamos tener una Master ​Page que represente ​la cabecera/​pie de página y la navegación global ​del sitio, y después Master Pages separadas que deriven ​de esta para definir los aspectos de las diferentes sub-secciones del sitio. ​ +=== Notas === 
- +  * La MasterPage inserta la el WebForm entre los eventos ''​PreInit''​ e ''​Init''​.  
- +  * Podemos indicar la MasterPage ​por códigopero antes del evento ''​PreInit''​ mediante la propiedad ''​MasterPageFile''​ del objeto ​Page
- +  * Podemos indicar ​la MasterPage por defecto a partir ​del fichero ​de configuración:​ 
- +<code xml> 
 +<​configuration>​ 
 +  <​system.Web>​ 
 +    <​pages master="​otc.master"​ /> 
 +  </​system.Web>​ 
 +</​configuration>​ 
 +</​code>​
  
 ===== Seguridad ===== ===== Seguridad =====
Línea 790: Línea 865:
  
 ===== WebServices ===== ===== WebServices =====
 +
 +
 +
  
  
Línea 829: Línea 907:
 } }
 </​code>​ </​code>​
 +  * En el ''​HttpContext''​ podemos recoger los parámetros mediante la ''​QueryString''​ (GET) o el ''​Form''​ (POST). ​
 +  * Si el controlador necesita leer la sesión del usuario que hace la petición necesitará implementar la interfaz ''​System.Web.SessionState.IReadOnlySessionState'',​ si además necesitase guardarla implementaría la ''​IRequiresSessionState''​.
  
 ===== Notas ===== ===== Notas =====
 +
 +
 ==== Como... ==== ==== Como... ====
 === Agregar una librería === === Agregar una librería ===
Línea 840: Línea 922:
 <code xml> <code xml>
 <​scs:​ScsComboBox ID="​dest"​ runat="​server"​ EnableDefaultItem="​false"​ Width="​100px"/>​ <​scs:​ScsComboBox ID="​dest"​ runat="​server"​ EnableDefaultItem="​false"​ Width="​100px"/>​
 +</​code>​
 +=== Saber ubicación de la aplicación en disco ===
 +Como lo hacemos en cualquier aplicación .NET simplemente tendríamos que consultar:
 +<code csharp>
 +string bdir = System.AppDomain.CurrentDomain.BaseDirectory;​
 +</​code>​
 +=== Acceder al Request\Response sin tener acceso a la clase Page ===
 +<code csharp>
 +HttpContext.Current.Request.MapPath("​~/"​);​
 </​code>​ </​code>​
  
sp/aspnet.1250364899.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)