2009-06-01 15 views
7

Mi chiedo se qualcuno ha esperienza nel convertire i controlli utente in controlli Web?Converti controlli utente in controlli server

Idealmente, mi piacerebbe scaricare parte del lavoro di progettazione per gli altri, che mi forniranno controlli utente ben disposti. Quindi, potrei passare attraverso il processo di conversione, compilazione, test e distribuzione.

Fino a quando MS non avrà l'opzione "Converti in controllo server", sembra che io sia piuttosto bloccato con la riscrittura da zero. Qualche idea?

+0

Cosa sarebbe sbagliato nell'utilizzare i controlli Utente? Se è necessario condividere la logica, è possibile che i file .ascx ereditino da una classe base definita in una libreria di classi, in modo che la logica possa essere facilmente riutilizzata; pur mantenendo un design visivo flessibile che può essere facilmente modificato. – driis

+0

Ho cercato per ore e ho provato molto. L'unica cosa che ha funzionato per me è stato questo articolo https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/. Dice 'self-contained' con le restrizioni date. Ho usato un progetto 'WebSite' e ho dovuto inserire il codice nel file ascx. Quindi fondamentalmente ho solo un singolo file a sinistra per il controllo dell'utente. – djmj

risposta

6

C'è un motivo per il quale lo deve convertire questi controlli utente in controlli server su? Ricorda che è possibile compile a user control into an assembly.

+0

Anche http://msdn.microsoft.com/en-us/library/aa479318.aspx – Loofer

+0

Archivio Web (a causa del sito Web offline): http://web.archive.org/web/20120328081058/http://www .nathanblevins.com/2008/06/compile-a-web-user-control-in-a-dll-net-c / – Caramiriel

1

Hai ragione, non esiste un punto magico qui, ma dal momento che hai già un controllo utente non è così difficile.

  1. Assicurarsi che tutte le proprietà, gli eventi, ecc si trovano in codice dietro dal momento che non avrete alcun segno quando hai finito
  2. creare un nuovo controllo server
  3. incollare tutte le movimentazione impostazione codice nel nuovo controllo
  4. override del metodo Render per ogni controllo figlio evento e proprietà chiamare il metodo RenderControl passando dotazione HtmlTextWriter

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

Ho cercato per ore e ho trovato molti blog su di esso.

L'unica cosa ha funzionato per me era questo articolo https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/.

Dice autonomo con determinate restrizioni, ma non menziona il fatto che il codebehind deve essere incluso nel ascx file.

ho usato un progetto di sito Web (applicazioni non Web!) E ha dovuto linea il codice sottostante nel file ascx e utilizzare solo Direttiva sul controllo come:

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

Quindi, in pratica ho solo un singolo file lasciato per il controllo utente. Quando codebehind era un file separato, tutti i controlli erano nulli quando ho fatto riferimento alla dll finale.

Ho anche provato http://blog.janjonas.net/2012-04-06/asp_net-howto-user-control-library-compile-dll-file ma con la riflessione il file ascx non è stato trovato.

Problemi correlati