Domanda

Come molti altri su questo sito sto valutando una mossa per ASP.NET MVC per i progetti futuri.Attualmente i miei siti sono in esecuzione tradizionale ASP.NET Web 2.0 Forme, e funziona bene per noi, quindi la mia altra opzione è solo quello di attaccare con quello che so e trasferirsi a ASP.NET 3.5 con l'AJAX integrato roba.

Mi sto chiedendo come utente controlli lavoro ASP.NET MVC.Abbiamo tonnellate di .ASCX controlli, e un paio di controlli compositi.Quando lavoro con il web designer è molto facile da ottenere loro di utilizzare ASCX controlli in modo efficace, anche senza alcuna conoscenza di programmazione, in modo che un più preciso.Ma poi, naturalmente, sono i lati negativi del ciclo di vita della pagina, che può essere esasperante, e il fatto che ASCX controlli sono difficili da condividere tra i diversi progetti.I controlli compositi sono di condivisione in grado, ma fondamentalmente una scatola nera di un designer.

Qual è il modello in ASP.NET MVC?C'è un modo per creare controlli che risolve i problemi che abbiamo affrontato con l'utilizzo di ASCX e controlli compositi?Permette un facile accesso per i web designer, senza doversi preoccupare di codice rotti, una considerazione importante.

È stato utile?

Soluzione

Per implementare un controllo utente si esegue la seguente chiamata:

<% Html.RenderPartial("~/Views/Shared/MyControl.ascx", {data model object}) %>

Si può anche vedere la sintassi precedente, che PR5 non è più valido

<%= Html.RenderUserControl("~/Views/Shared/MyControl.ascx", {data model object}) %>

Sarà sempre preoccuparsi di interruzione di codice durante lo spostamento da un Web Form MVC, tuttavia il ASP.NET MVC squadra ha fatto un grande lavoro per ridurre al minimo i problemi.

Altri suggerimenti

Come Nick suggerito, sarà davvero in grado di rendere il vostro utente controlli, ma ovviamente la pagina del ciclo, pagestate e di postback dal tradizionale ASP Webforms non funziona più, rendendo i controlli probabilmente inutile.

Penso che dovrai riscrivere la maggior parte del vostro complesso di controlli porta il tuo sito web a MVC, mentre il semplice controllo che, per esempio, forniscono solo la formattazione e non postback di stato, deve semplicemente lavorare.Il codice fornito da Nick, semplicemente, funziona in questo caso.

E sulla condivisione tra più progetti:Penso che i controlli saranno più come "riutilizzabili di rendering HTML di componenti" che possono essere condivisi attraverso un sito web, piuttosto che "il codice riutilizzabile componenti" con la logica (come WebForms controlli).Il web di logica dovrebbe essere nelle pagine controller e non in HTML controlli.Pertanto i controlli di condivisione tra più progetti non essere così utile come nel WebForms caso.

MVC è diverso ciclo di vita della pagina confrontare il controllo utente.

Si può considerare questo ri-scrivere.

Aspx è il vista.Hai ancora bisogno di una ri-scrittura, la sintassi è diversa.JavaScript di lavoro.Ma stento a trovare i Webcontrol di lavoro.Perché MVC non viewstate e di postback più.

Per il codice dietro (aspx.cs) è necessario per la conversione che per essere un Controller classe.Page_Load metodo non funziona più.È probabile lasciare Index() metodo.

Modello è semplicemente le classi di entità che il codice dietro di consumare.

Conclusione, è una riscrittura totale.Ciao.Felice di codifica.

Sì, si può fare RenderPartial.Questo è un buon inizio.Ma alla fine questi ragazzi avranno bisogno di logica e di altro tipo di controller di roba.Essere sull'allerta per una subcontroller attuazione del programma quadro di squadra.Ci dovrebbe essere anche qualcosa in MvcContrib presto.O rotolare il vostro proprio.

Edit: Ho appena postato su questo qui: http://mhinze.com/subcontrollers-in-aspnet-mvc/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top