2010-07-19 78 views
20

Soy realmente un principiante, por lo que mi pregunta puede parecer ridícula ... Pero, me pregunto cómo funcionan los archivos .aspx.designer.cs .. Es la primera vez que trabajo con una solución que contiene archivos .aspx .designer.cs para cada página. Así que entiendo que es la declaración de los controles utilizados en el .aspx de código subyacente ..aspx.designer.cs ¿cómo funciona?

aquí está mi pregunta:

Por qué a veces las soluciones doen't tener archivos aspx.designer.cs? (¿Los archivos están ocultos o no existen?)

A menudo tengo problemas con estos archivos, no recrean automáticamente las declaraciones de controles cuando agrego algunas en el código .aspx, ¿qué estoy haciendo mal?

Respuesta

25

Los archivos .aspx.designer.xx son el puente para los archivos de código fuente de ASP.NET y los archivos de marcado .aspx. Cualquier control de servidor existente en la página de marcado aspx está representado aquí. Lo más importante es el nombre y el tipo de control del servidor.

Esto, en parte, permite a Visual Studio dar al usuario IntelliSense en la página de código subyacente para los controles de servidor creados en tiempo de diseño.

Cómo funcionan: Visual Studio generará, o mantendrá en sincronía, un miembro protected en el archivo .designer cuando agregue/elimine un control de servidor del diseñador.

protected global::System.Web.UI.WebControls.DropDownList DropDownList1; 

en cuenta que los archivos .designer crean un partial class. Esto proporciona el enlace al archivo de código subyacente. Así es como Intellisense obtiene el gancho entre el .aspx y el código subyacente.

Puede regenerar el archivo del diseñador: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/

+0

Gracias por responder, pero ¿Es posible solicitar manualmente la reconstrucción del archivo de diseñador para una página? – bAN

+1

@ban: apueste, aquí está cómo regenerar su archivo de diseñador: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/ –

18

Visual Studio tiene dos enfoques para la creación de sitios web: Proyectos Web del sitio y proyectos de aplicación Web. (OK, OK, tres si agrega MVC).

Solo los proyectos de aplicaciones web tienen archivos designer.cs. Los proyectos del sitio web no los tienen.

La Web Tipo de proyecto de aplicación se añadió en Visual Studio 2003.

+2

Eso respondió mi pregunta, gracias! – Nestor

0

Como se señaló p.campbell de salida, el archivo .designer.cs vincula el archivo .aspx a su archivo .aspx.cs CodeBehind. Sin el archivo .designer.cs, cada control de página .aspx en el archivo .Back.Exp.cspx.cs devolverá el error, "no existe en el contexto actual". La vinculación en .designer.cs se realiza en función de la propiedad "Inherits" de la directiva @ Page en el archivo aspx junto con el espacio de nombres y la clase del archivo .Baspx.cs CodeBehind. El segmento final de la propiedad "Inherits" debe coincidir con la clase definida tanto en el archivo CodeBehind como en el archivo .designer.cs, y los segmentos anteriores deben coincidir con el espacio de nombres de los archivos .designer.cs y CodeBehind.

Ejemplo: myfile.aspx

<%@ Page Language="C#" 
    AutoEventWireup="true" 
    CodeBehind="myfile.aspx.cs" 
    Inherits="my.namespace.dot.classname" %> 

myfile.aspx.cs

namespace my.namespace.dot { 
    public partial class classname : Page { ... } 
} 

Nota: la clase de archivos CodeBehind debe heredar de la clase Page, o algún derivado del mismo.

myfile.designer.aspx.cs

namespace my.namespace.dot { 
    public partial class classname { ... } 
} 

Nota: la clase .designer.cs no se preocupa por la herencia, al igual que el nombre de la clase coincide con el CodeBehind y archivos .aspx.

Puede regenerar un archivo perdido .designer como esto (w3cgeek.com "Regenerate designer.cs '):

  1. Crear un nuevo archivo en blanco en la misma dir como sus .aspx y .aspx.cs archivos denominados' myfile.aspx.designer.cs "donde" myfile "es el nombre de los archivos .aspx y .aspx.cs que desea vincular.
  2. Agregue un espacio de nombres con una clase vacía al nuevo archivo y asegúrese de que sus nombres coincidan con el espacio de nombres y la clase especificados en los archivos .aspx y .aspx.cs que está vinculando.
  3. Guarde el archivo .designer.cs, realice cualquier cambio en el archivo .aspx (por ejemplo, agregue un espacio) y guarde el archivo .aspx.

Visual Studio debe rellenar automáticamente el archivo .designer.cs con todo el código necesario para vincular sus archivos .aspx y CodeBehind. El error "no existe en el contexto actual" debería desaparecer.

EDIT: Agregué las instrucciones .designer.cs porque el enlace está muerto y fue publicado originalmente por p.campbell.