108 votes

ASP.NET MVC Razor passer le modèle à la mise en page

Ce que je vois, c'est une propriété de disposition de chaîne. Mais comment puis-je passer explicitement un modèle à la propriété Layout ?

0voto

HappyPawn8 Points 21

Supposons que votre modèle soit une collection d'objets (ou peut-être un seul objet). Pour chaque objet du modèle, procédez comme suit.

1) Placez l'objet que vous souhaitez afficher dans le ViewBag. Par exemple :

  ViewBag.YourObject = yourObject;

2) Ajoutez une instruction using en haut de _Layout.cshtml qui contient la définition de la classe pour vos objets. Par exemple, dans _Layout.cshtml

@utilisant VotreApplication.VosClasses ;

3) Lorsque vous faites référence à votre objet dans _Layout cast it. Vous pouvez appliquer le cast grâce à ce que vous avez fait en (2).

-2voto

Will Points 19
public interface IContainsMyModel
{
    ViewModel Model { get; }
}

public class ViewModel : IContainsMyModel
{
    public string MyProperty { set; get; }
    public ViewModel Model { get { return this; } }
}

public class Composition : IContainsMyModel
{
    public ViewModel ViewModel { get; set; }
}

Utilisez IContainsMyModel dans votre mise en page.

Résolu. Règle des interfaces.

-6voto

ouah Points 101

Par exemple

@model IList<Model.User>

@{
    Layout="~/Views/Shared/SiteLayout.cshtml";
}

En savoir plus sur la nouvelle @modèle directive

-6voto

user2443263 Points 1

Comme je l'ai indiqué dans mon message précédent, avant que Bluefeet ne décide de le supprimer,

"Toutes les solutions déjà proposées fonctionnent parfaitement. Puisqu'il y a plusieurs façons d'"accomplir cela". j'ai pensé proposer une solution supplémentaire".

Vous pouvez effectuer un appel AJAX qui renvoie le JSON ou le HTML à ajouter à votre page.

Ajouter de la couleur

Comme il s'agissait d'une question vague au départ, je vais ajouter un peu de couleur à la façon dont vous POUVEZ le faire et dont je l'ai fait.

Si vous avez créé une API Web dans votre site, vous pouvez faire un appel REST à cette API pour obtenir le JSON à analyser. Si vous n'avez pas d'API Web, vous pouvez faire un appel REST à une action dans votre contrôleur, puis utiliser JSon.Net pour analyser votre objet en JSon valide. http://www.nuget.org/packages/Newtonsoft.Json/6.0.1 .

Dans votre vue, vous pouvez utiliser knockoutjs http://knockoutjs.com/documentation/style-binding.html pour lier les données de votre page. Cette option vous permet de charger votre contenu de manière asynchrone tout en étant capable de vous lier à votre modèle de vue.

~Applaudissements

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