Je tente de créer un contrôle personnalisé dans ASP.NET MVC. La chose que je veux éviter est de mélanger la vue (html) et le code (C#) dans ces contrôles. Après des heures passées à googler et à faire face à ce problème, j'ai finalement pensé à créer des méthodes d'aide qui utilisent la vue ASP. Engine pensait à la classe ViewPage.Passage de ViewData à ViewPage dans ASP.NET MVC
Je peux créer une instance de la classe et même charger un modèle ascx en utilisant les méthodes LoadControl et LoadTemplate mais le problème est que lorsque je passe un objet ViewData à une instance de classe ViewPage, je ne peux pas voir le ViewData dans le ViewPage et que je reçois cette erreur:
The ViewUserControl '~/Components/Controls/EditableLabel/Views/EditableLabel.ascx' cannot find an IViewDataContainer. The ViewUserControl must be inside a ViewPage, ViewMasterPage, or another ViewUserControl.
en général, l'effet final que je veux réaliser des contrôles est chargement avec certains paramètres, ces paramètres doivent être lisibles dans le modèle (ascx).
exemple:
<% Html.EditableLabel(Writer, "memberName", "Name", "Antonio", "/identity/updateProperty", "memberName"); %>
- est-il un moyen de passer le ViewData à l'instance ViewPage que je crée?
- Existe-t-il un moyen plus intelligent de créer des contrôles/widgets personnalisés dans ASP.NET MVC?
Merci à l'avance
Si vous utilisez une protection, la probabilité de passer VD est grandement réduite –
Que voulez-vous dire par «protection» et pourquoi est-il diminué? Les contrôles peuvent utiliser des liaisons de valeurs pour pouvoir charger des valeurs à partir de ViewDataDictionary ou de model. – zihotki
@Rexm lol! @zihotki profiter de la brise. –