97 votes

Comment passer des paramètres à une vue partielle dans ASP.NET MVC?

Supposons que j'ai cette vue partielle:

 Your name is <strong>@firstName @lastName</strong>
 

qui est accessible via une action enfant seulement comme:

 [ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{

}
 

Et je veux utiliser cette vue partielle dans une autre vue avec:

 @Html.RenderPartial("FullName")
 

En d'autres termes, je veux pouvoir passer firstName et lastName d'une vue à une vue partielle. Comment devrais-je faire ça?

79voto

David Wick Points 4997

Utilisez cette surcharge ( RenderPartialExtensions.RenderPartial sur MSDN ):

 public static void RenderPartial(
    this HtmlHelper htmlHelper,
    string partialViewName,
    Object model
)
 

alors:

 @{Html.RenderPartial(
    "FullName",
    new { firstName = model.FirstName, lastName = model.LastName});
}
 

25voto

simonlchilds Points 1658

Vous devez créer un modèle de vue. Quelque chose comme ça devrait faire ...

 public class FullNameViewModel()
{
     public string FirstName { get; set; }
     public string LastName { get; set; }

     public FullNameViewModel() { } 

     public FullNameViewModel(string firstName, string lastName)
     {
          this.FirstName = firstName;
          this.LastName = lastName;
     }

}
 

puis de votre résultat d'action passe le modèle

 return View("FullName", new FullNameViewModel("John", "Doe");
 

et vous pourrez accéder à @Model.FirstName et @Model.LastName

15voto

BlackTigerX Points 3569

assurez-vous d’ajouter {} autour de Html.RenderPartial, en tant que:

 @{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}
 

ne pas

 @Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X