ViewModel concept existe toujours dans ASP.NET MVC de Base?
Dans les versions précédentes de ASP.NET MVC vous trouverez des informations sur les ViewModels et comment les utiliser dans cette version.
Je me demandais pourquoi je ne peux pas trouver toutes les informations sur ce sujet dans ASP.NET Core, MVC? Le concept existe encore et si oui, où je dois les mettre?
La question se pose parce que je veux faire un tableau de bord pour les projets. Les projets sont le principal point d'entrée dans mon application web. Ils ont beaucoup de relations e.g, avec les jalons.
Modèles:
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public ICollection<Milestone> Milestones { get; set; }
...
}
public class Milestone
{
public int MilestoneId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime Deadline { get; set; }
public int? ParentId { get; set; }
public Milestone Parent { get; set; }
public ICollection<Milestone> Childrens { get; set; }
...
}
Avant ASP.NET de Base, j'ai créé un ProjectDashboardViewModel pour obtenir des informations à la vue. Puis-je utiliser la même approche?
OriginalL'auteur itcompi | 2016-11-27
Vous devez vous connecter pour publier un commentaire.
"Le concept existe encore?" "Puis-je utiliser la même approche?"
Oui, le ViewModel concept est toujours applicable .NET de Base et vous ne les utilisent encore comme avant, c'est à dire à rassembler une sélection de données dans une "forme" qui correspond aux besoins d'un point de vue particulier.
"Je ne trouve aucune information sur ce sujet dans ASP.NET Core, MVC"
Le document officiel qui décrit les modèles de vue largement. La vue d'ensemble de ASP.NET Core, MVC section a ceci à dire:
Dans le Rendu HTML avec vue sur l'article:
Le MVC/Avancé/Pièces pour l'Application de la section aborde également les Modèles de Vue, l'exemple de code montre comment vous pouvez assembler un certain nombre de différents objets à l'ensemble de la consommation par la vue avec un modèle de vue.
Ils ont également mentionner dans la section sur les Vues Partielles. Il y a un exemple de code qui va avec cette ici, mais ces exemples ne fait pas de bien mettre en évidence la différence entre un modèle et un modèle de vue.
Une recherche dans les docs comme suit met en lumière certains plus trop: https://docs.microsoft.com/en-us/search/index?search=viewmodel&scope=ASP.NET+Core
"..je veux faire un tableau de bord pour les projets"
Dans votre cas, les données que vous avez fournies montre juste un seul domaine de l'objet (le "Projet") qui a certains objets enfants. Si c'est toutes les données que vous souhaitez afficher, puis vous n'avez probablement pas besoin d'un modèle de vue que ce serait tout simplement un miroir de votre
Project
modèle.Cependant, si vous souhaitez afficher d'autres informations sur le tableau de bord du Projet, par exemple, certaines données agrégées données sur le nombre de projets en cours, une liste de projets qui sont derrière etc. ensuite, vous pouvez assembler un modèle de vue avec des propriétés pour: Projet, NumberInProgressPrjects, OverdueProjectsList etc.
C'est juste un exemple, le point est que vous pouvez utiliser le modèle de vue pour résumer toutes les données nécessaires à votre point de vue, plutôt que votre contrôleur de retour d'un modèle objet qui correspond à un domaine unique objet (souvent une table de votre base de données) et puis beaucoup de données supplémentaires que vous avez besoin pour faire le reste de la fonction de la page dans le
ViewData
collection (par exemple, les données nécessaires pour remplir les listes déroulantes). Il ya beaucoup d'excellents articles sur les modèles de vue, cette question précédente les couvre de manière exhaustive par exemple, et est tout aussi pertinente .NET MVC de Base que d'autres versions de la MVC."..où je dois les mettre?"
Vous pouvez les mettre où vous choisissez, assurez-vous d'utiliser un
using
déclaration en cas de besoin. Le typique de la convention dans les petits projets est de les placer dans un dossier appelé "Viewmodel'.Merci de me laisser savoir @Snympi, regarde comme ils ont restructuré le repo légèrement. J'ai résolu le lien maintenant.
OriginalL'auteur tomRedox
ViewModel /MVVM (Model-View-ViewModel) est un modèle d'architecture et non liées à un cadre ou une pile.
Signifie que vous pouvez toujours l'utiliser, c'est juste une couche d'abstraction supplémentaire sur le dessus du modèle MVC qui regroupe les données dans une forme qui la rend facile à consommer pour la vue.
Il n'y a pas de raison particulière. La plupart des tutoriels ou des articles à couvrir ce qui est nouveau (configuration, de nouvelles fonctionnalités) ou des tutoriels (MVC avec VM serait overengineered pour un exemple simple). Et VM avec MVC n'est évidemment pas quelque chose de nouveau. L'officiel ASP.NET échantillon de Base du projet (MusicStore) toujours utiliser github.com/aspnet/MusicStore/tree/rel/1.1.0/samples/MusicStore/...
Aussi, comment voulez-vous que nous vous dire pourquoi les blogueurs ne pas poster ce sujet lors de la rédaction d'échantillons, son jusqu'à l'auteur de ces sources pour l'ajouter ou de le laisser dehors
OriginalL'auteur Tseng
Vous pouvez utiliser le relationsships de la dbcontext
https://docs.microsoft.com/en-us/ef/core/modeling/relationships
OriginalL'auteur demser