In MVC 3, comprendo che è possibile creare pagine WebView personalizzate. È possibile iniettare dipendenze, utilizzando l'iniezione del costruttore, tramite un contenitore IOC?È possibile iniettare dipendenze in un costruttore di una pagina WebView personalizzata, utilizzando un contenitore IOC?
risposta
C'è un expample per la visualizzazione di iniezione in un post sul blog di Brad Wilson http://bradwilson.typepad.com/blog/2010/07/service-location-pt3-views.html
Le dichiarazioni degli altri che le opinioni permettono l'iniezione costruttore non del tutto corretto. Sì IDependencyResolver
consente di creare viste con argomenti del costruttore. Ma a meno che tu non stia implementando il tuo motore di visualizzazione, questo non ti aiuterà affatto. I motori di visualizzazione esistenti come il rasoio richiederanno di avere un costruttore senza parametri. Ciò significa che puoi fare solo l'iniezione di proprietà sulle viste con loro.
Ma come gli altri hanno detto che non si dovrebbe comunque vedere l'iniezione. La tua vista dovrebbe essere stupida e basta rendere il modello di visualizzazione in HTML. Tutto ciò che richiede una dipendenza dovrebbe essere fatto nel controller o in un servizio.
Sì, è possibile, ma penso davvero che non sia una buona idea. Perché avresti bisogno di alcuni "servizi" a livello di vista? Ricordare la linea guida MVC chiave - una vista deve essere stupida. In effetti, dovrebbe essere solo una sorta di modello per la trasformazione dell'oggetto modello di visualizzazione in HTML, niente di più.
Buon punto. Dovrebbe iniettare servizi nel 'Controller', non nella vista. – Steven
traduzioni i18n nella vista. La vista contiene le chiavi e basta tirare la traduzione corretta. Nessuna ragione per cui non può essere nella vista. – BradLaney
Che dire di un servizio di localizzazione o di configurazione che contiene solo testo? Sono tecnicamente ancora stupidi –
Non è possibile eseguire costruttore iniezione. Ma si può fare qualcosa di simile con, diciamo, Ninject:
public abstract class CustomViewBase<TModel> : WebViewPage<TModel> where TModel : class { [Inject] public IFace Face { get; set; } }
e supponendo che si è impostato IDependencyResolver in Global.asax si dovrebbe avere correttamente la proprietà @Face inizializzato. Ma un avvertimento importante: non è possibile accedere a @Face in _Layout.cshtml, perché (secondo Brad Wilson) Layout funziona all'esterno di MVC e @Face sarà nullo quando si tenta di accedervi nella pagina di layout.
In ogni caso sono d'accordo con gli altri in quanto la visione non dovrebbe avere a che fare con qualsiasi logica complessa.
QUESTO è fantastico! Non mi rendevo conto che potevi farlo con Ninject. –
Non deve neanche essere Ninject. Autofac e altri faranno la stessa cosa, senza bisogno del decoratore. –
Ha funzionato bene nelle pagine ereditate. Ma qual è la soluzione per accedere agli stessi metodi di classe iniettati all'interno del layout (masterpage) in MVC –
- 1. Utilizzando IoC, è possibile iniettare un Singleton con oggetti che hanno una durata transitoria?
- 2. Iniezione Costruttore/incastonatore utilizzando IoC in HttpHandler, è possibile?
- 3. Quando utilizzare un contenitore IOC?
- 4. Con un contenitore IoC, un costruttore dovrebbe ancora verificare se un parametro è nullo?
- 5. E 'possibile iniettare un elenco di oggetti risolti in un costruttore utilizzando Autofac?
- 6. Iniettare un codice JavaScript in Webview iOS
- 7. In che modo è possibile testare i controller dell'unità senza un contenitore IoC?
- 8. Come creare un contenitore di iniezione delle dipendenze PHP
- 9. Come iniettare dipendenze nel file global.asax.cs
- 10. Un semplice contenitore IoC per un piccolo sistema di plugin
- 11. Iniezione delle dipendenze ASMX e IoC
- 12. con Unity per iniettare le dipendenze in un personalizzato ActionFilter
- 13. come iniettare proprietà di dipendenza utilizzando Ioc Unità
- 14. Come utilizzare un contenitore Unity IoC con Template10?
- 15. È possibile utilizzare un percorso relativo quando si imposta una pagina di errore personalizzata in IIS7?
- 16. Come iniettare dipendenze in un oggetto auto-istanziato in primavera?
- 17. È possibile sovrascrivere un costruttore in C#?
- 18. Unità IoC quadro con predefinito costruttore
- 19. Come nascondere la pagina di errore di WebView. È possibile?
- 20. Come iniettare dipendenze in un fornitore usando Angularjs?
- 21. Quali dipendenze dovrei iniettare?
- 22. Contenitore IoC incorporato nel progetto
- 23. iniettare CSS a un sito con WebView in Android
- 24. Angolare 2 - come iniettare dipendenze alla classe personalizzata che non è un componente e non è esposta come servizio
- 25. Come iniettare un valore al costruttore di fagioli con annotazioni
- 26. Contenitore IoC per librerie di classi portatili
- 27. Contenitore IoC leggero che funziona in Unity3D
- 28. Usa contenitore IoC per architettura plugin
- 29. Iniettare l'iniettore delle dipendenze usando l'iniezione delle dipendenze
- 30. Autorizzazione personalizzata MVC 3 e Ninject IoC
Cosa succede se si dispone dell'autorizzazione personalizzata che si desidera poter utilizzare come proprietà della vista? (per specificare alcune parti che non dovrebbero essere renderizzate in rasoio senza le autorizzazioni necessarie) –