Pregunta

Estoy creando un control personalizado compuesto a base fuera de un asp: control Label. Me gustaría ser capaz de tener propiedades predeterminadas de la etiqueta sean skinable, así como propiedades adicionales que agrego a mi control.

Pero cuando agrego una definición de la piel en el fichero de Default.skin en mi directorio de temas, y añadir el control de mi página con el SkinID especificado, no puedo encontrar la manera de obtener el control para el procesamiento con las propiedades de piel clara.

puntos adicionales:

  • Mi control personalizado se define en una biblioteca / DLL separado.
  • I añadió una propiedad de prueba, y se añadió el [Aspecto configurable (false)] atributo. Entonces me puse esa propiedad en el archivo .skin. No he tenido ningún error cuando traté de ver la página, por lo que me parece que no está siendo aplicado el archivo .skin o que la definición de control en el archivo de piel no corresponde con la definición de control en el aspx página.

Desde el archivo de la piel:

<ctrl:ExtendedLabel SkinId="test" runat="server"
 Expandable="true" Lookup="true" Required="true"
 RequiredCssClass="required" Text="Hello" />

Desde la página aspx:

<ctrl:ExtendedLabel SkinID="test" runat="server"/>

A partir de web.config:

<pages>
  <controls>
     <add tagPrefix="ctrl" namespace="MyCompany.WebControls"
          assembly="MyCompany.Web" />
  </controls>
</pages>

He añadido una característica de prueba para el control, marcado como [Aspecto configurable (falso)] con el fin de probar si me sale el error de tiempo de ejecución al establecer que la propiedad en el archivo de la piel. No hay error.

Tenga en cuenta que la etiqueta de páginas no tiene un atributo StyleSheetTheme. Me parece sin embargo, tiene una clase de página Base que anula la propiedad StyleSheetTheme, que parece funcionar para todo lo demás.

Si añado el atributo StyleSheetTheme a la etiqueta de páginas en web.config, trabaja la materia de la piel, incluyendo conseguir el error si se intenta establecer la propiedad no Aspecto configurable.

¿Cuál es la diferencia? ¿Cómo puedo conseguir que funcione con el código de propiedad de clase Base página?

¿Fue útil?

Solución

¿Qué obtiene cuando intenta esto? Acabo de crear un proyecto de prueba simple y era capaz de pelar una propiedad personalizada en un control web personalizado. Mis pasos fueron los siguientes:

  • Crea el control personalizado.
  • Añadir [Aspecto configurable (true)] atributo a la definición de clase en el archivo de código subyacente.
  • Añadir un control Label a mi control personalizado.
  • Añadir una propiedad denominada "labelText" a mi control personalizado, que recibe / establece el valor controles de etiqueta de texto.
  • En web.config, agregue 'tema = "TestTheme"' a la sección System.Web / páginas.
  • En web.config, agregue '' a los System.Web / pages / controla sección.
  • En mi archivo Default.skin, añadido '
  • En Default.aspx, añadido '

Cargar la página hacia arriba y ver el texto "texto de prueba", que sólo estaba presente en el archivo de la piel.

Con suerte uno de mis pasos anteriores habrá algo se le olvidó, pero si no es así, por favor, actualice su pregunta con más detalles sobre lo que está tratando y lo que está viendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top