2009-06-01 14 views
7

Me pregunto si alguien tiene alguna experiencia en convertir controles de usuario a controles web.Convertir controles de usuario a controles de servidor

Idealmente, me gustaría descargar algunos de los trabajos de diseño a otros, que me darían controles de usuario muy bien distribuidos. Luego, podría pasar por el proceso de conversión, compilación, prueba e implementación.

Hasta que MS presente la mágica opción de "Convertir al control del servidor", parece que estoy bastante atascado con volver a escribir desde cero. ¿Algunas ideas?

+0

¿Cuál sería el problema con el uso de los controles de usuario? Si necesita compartir la lógica, podría hacer que los archivos .ascx hereden de una clase base que usted define en una biblioteca de clases, para que la lógica se pueda reutilizar fácilmente; manteniendo un diseño visual flexible que se puede cambiar fácilmente. – driis

+0

Busqué durante horas e intenté mucho. Lo único que funcionó para mí fue este artículo https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/. Dice 'autónomo 'con restricciones dadas. Usé un proyecto 'WebSite' y tuve que insertar el código detrás en el archivo ascx. Básicamente, solo me queda un solo archivo para el control del usuario. – djmj

Respuesta

6

¿Hay alguna razón por la que debe convertir estos controles de usuario a controles del servidor? Recuerde que es posible compile a user control into an assembly.

+0

También http://msdn.microsoft.com/en-us/library/aa479318.aspx – Loofer

+0

Archivo web (debido a sitio web fuera de línea): http://web.archive.org/web/20120328081058/http://www .nathanblevins.com/2008/06/compile-a-usuario-control de la tela-en-un-DLL-net-c / – Caramiriel

1

No hay ninguna bala mágica aquí, pero como ya tiene un control de usuario, no es tan difícil.

  1. Asegúrese de que todas las propiedades, eventos, etc se encuentran en el código subyacente, ya que no tendrá ninguna marca cuando haya terminado
  2. Crear un nuevo servidor de control de
  3. pegar todos los manejo de eventos y la propiedad de ajuste del código en el nuevo mando a
  4. reemplazar el método Render para cada control secundario llamar al método RenderControl que pasa en el HtmlTextWriter suministrado

    protected override void Render(HtmlTextWriter writer) 
    { 
        TextBox box = new TextBox(); 
        //Set all the properties here 
        box.RenderControl(writer); 
        base.Render(writer); 
    } 
    
0

Busqué durante horas y encontré muchos blogs al respecto.

Lo único que funcionó para mí fue este artículo https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/.

Dice autocontenido con las restricciones dadas, pero no menciona que el código subyacente se debe incluir en el archivo ascx.

he usado un proyecto de sitio Web (aplicación no web!) Y tuvo que línea el código subyacente en el ascx y sólo usar la directiva de control como:

<%@ Control Language="C#" ClassName="MyPackage.MyControl"%> 

Así que, básicamente, sólo tengo una sola archivo dejado para el control del usuario. Cuando codebehind era un archivo separado, todos los controles eran nulos cuando hacía referencia al dll final.

También probé http://blog.janjonas.net/2012-04-06/asp_net-howto-user-control-library-compile-dll-file pero con la reflexión no se pudo encontrar el archivo ascx.

Cuestiones relacionadas