UserControl MVC fortement typé : comment transmettre le Model
Bonjour,
Je rencontre un problème en voulant utiliser une vue MVC fortement typée, je m'explique :
- J'ai un Controller HomeController.cs contenant une action Person
- J'ai une View associée à cette action Person.aspx qui est fortement typée.
- Le Model correspondant est PersonModel.cs
Jusqu'ici rien de spécial.
- J'ai créé un UserControl View MVC fortement typé Profile.ascx
- Le Model correspondant est ProfileModel.cs
Je veux utiliser ce UserControl dans ma View :
- Une référence à Profile.ascx est incluse dans ma View Person.aspx
- Le Model PersonModel.cs à une propriété public Profile de type ProfileModel.cs
- Dans mon action Person de HomeController.cs j'ai le code suivant :
Code:
1 2 3 4 5 6 7 8 9
|
public ActionResult Person()
{
PersonModel person = new PersonModel();
person.Profile = new ProfileModel();
person.Profile.Name = "toto";
ViewData.Model = person;
return View();
} |
Le problème est le suivant :
Comment récupérer l'objet de type ProfileModel de la propriété Profile dans ma View UserControl sachant que le typage est fait de la façon suivante dans Profile.ascx :
Code:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Models.ProfileModel>" %>
la ligne
Code:
<%= Html.DisplayFor(m => m.Name) %>
plante car elle attend un objet m de type ProfileModel et non PersonModel. Comment peut-on lui passer la propriété Profile?