Cet article présente principalement les quatre façons dont ASP.NET MVC transfère les données du contrôleur vers la vue. Il a une certaine valeur de référence et les amis intéressés peuvent s'y référer.
Prélude
1. Sous le fichier Modèles du nouveau projet, créez une nouvelle classe Produits :
public class Products { public int Id { get; set; } public string Name { get; set; } public double Price { get; set; } }
2. Dans le contrôle Instanciez cette classe dans le contrôleur
var p = new Products() { Id = 1, Name = "饮料", Price = 2.5 };
Méthode 1 : ViewData
Utilisez ViewData pour saisir la méthode le contrôleur La classe formelle de paires de valeurs stocke les objets instanciés ci-dessus, comme suit :
ViewData["person"] = p;
Ensuite, récupérez la valeur dans ViewData dans la vue et convertissez l'objet, comme suit :
@{ var p = (Products)ViewData["person"]; } <h1>@p.Id</h1> <h2>@p.Name</h2> <h3>@p.Price</h3>
Méthode 2 : ViewBag
Utilisez la méthode dans le contrôleur pour stocker l'objet ci-dessus sous la forme de l'expression dynamique ViewBag, comme suit :
ViewBag._Product = p;
Modifier la vue comme suit :
@{ var p = (Products)ViewBag._Product; }
Méthode 3 : Modèle
Renvoyez la méthode dans le contrôleur à l'objet View ci-dessus, comme suit :
public ActionResult Index() { var p = new Products() { Id = 1, Name = "饮料", Price = 2.5 }; return View(p); }
Et nous obtenons l'objet de type obligatoire Products dans la vue, comme suit :
@using MvcTest.Models; @model Products @{ ViewBag.Title = "Index"; } <h1>@Model.Id</h1> <h2>@Model.Name</h2> <h3>@Model.Price</h3>
Méthode 4 : TempData
TempData peut continuer à être utilisé via la redirection car sa valeur est enregistrée au milieu de la session. Cependant, TempData ne peut être transmis qu’une seule fois et sera ensuite automatiquement effacé par le système.
Ci-dessous, je vais démontrer le passage de l'action Index à l'action Order et afficher la valeur stockée dans TempData dans la vue.
Créez d'abord une nouvelle méthode Action dans le contrôle et nommez-la Méthode Order. Le code est le suivant :
public ActionResult Index() { var p = new Products() { Id = 1, Name = "饮料", Price = 2.5 }; TempData["_product"] = p; return RedirectToAction("Order"); } public ActionResult Order() { return View(); }
Modifiez la vue comme. suit :
@{ Products p = (Products)TempData["_product"]; }
Supposons que le code dans le contrôleur soit modifié comme suit :
public ActionResult Index() { var p = new Products() { Id = 1, Name = "饮料", Price = 2.5 }; TempData["_product"] = p; return RedirectToAction("Order"); } public ActionResult Order() { return RedirectToAction("Detail"); } public ActionResult Detail() { Products _product = (Products)TempData["_product"]; return View(""); }
Tournez-vous vers : Index — Ordre — Détail, puis dans Détail Dans la méthode, l'objet TempData ne peut pas être obtenu car TempData ne peut être transmis qu'une seule fois et sera automatiquement effacé par le système.
Résultats de sortie
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!