L'equivalente funzionale più simile ai controlli utente riutilizzabili in stile WebForms in MVC sono helper HTML. Un helper html è un metodo che restituisce alcuni markup. L'approccio consigliato è quello di implementare loro sotto forma di metodi di estensione off HtmlHelper
o qualche altra proprietà di una pagina MVC:
public static IHtmlString MyControl(this HtmlHelper helper, string value) {
return new HtmlString("<p>" + value + "</p>");
}
È possibile aggiungere questo metodo per il vostro progetto MVC direttamente o è possibile aggiungerlo a una classe separata biblioteca. L'unica cosa che la libreria di classi deve fare riferimento è System.Web.Mvc.dll per il riferimento HtmlHelper
(potrebbe anche essere necessario System.Web.dll se si utilizzano più tipi).
Di solito li chiamate dalla visualizzazione in questo modo (questo esempio utilizza la sintassi Razor che c'è di nuovo in MVC 3)
@Html.MyControl("my value")
Mentre aiutanti superficialmente html emettono markup proprio come controlli utente, ci sono differenze significative. Il più importante è che le viste MVC non hanno il concetto del ciclo di vita della pagina WebForms. Ciò significa che a differenza dei controlli utente, gli helper html vengono visualizzati in un unico passaggio. Non ci sono fasi multiple come Init, Load, Render etc in WebForms in cui è possibile collegare eventi lato server per interagire con altri controlli nella pagina.
A seconda degli specifici tipi di eventi di cui si sta parlando, potrebbero essere necessarie tecniche MVC-centric appropriate per risolvere il proprio compito.Potresti fornire maggiori dettagli su cosa vuoi fare? Gli helper HTML possono essere abbastanza potenti. Ad esempio, i controlli di input MVC incorporati come TextBoxFor
possono collegare la convalida lato client ecc.
correlati a (ma non a un duplicato di) queste domande: [73902] (http://stackoverflow.com/questions/73902/ asp-net-mvc-components), [810187] (http://stackoverflow.com/questions/810187/is-there-an-equivalent-to-monorail-view-components-for-the-asp-net-mvc -framework) –