Accéder aux propriétés du modèle de Rasoir-4 vue
J'ai le texte suivant EF généré modèle de données:
public partial class PrinterMapping
{
public string MTPrinterID { get; set; }
public string NTPrinterID { get; set; }
public string Active { get; set; }
}
Je puis avoir le point de vue suivant modèle:
public class PrinterViewModel
{
public PrinterMapping PrinterMapping;
public Exceptions Exceptions;
public IEnumerable<PrinterMapping> Printers;
}
Dans mon Index Action dans le contrôleur HomeController je transmets mon point de vue, le modèle de la vue Index.
private eFormsEntities db = new eFormsEntities();
public ActionResult Index()
{
PrinterViewModel printerModel = new PrinterViewModel();
printerModel.Printers = from pt in db.PrinterMapping select pt;
return View(printerModel);
}
Mon Index, affichage de l'appelant une vue partielle de la façon suivante vers la fin (probablement à tort):
@Html.Partial("~/Views/Home/GridView.cshtml")
Mon GridView.cshtml ressemble:
@model AccessPrinterMapping.Models.PrinterViewModel
<h2> This is Where the Grid Will Show</h2>
@{
new WebGrid(@model.Printers, "");
}
@grid.GetHtml()
J'ai appris à propos de l'WebGrid méthode de http://msdn.microsoft.com/en-us/magazine/hh288075.aspx.
Mon WebGrid ligne n'est pas heureux du tout puisqu'il ne reconnaît pas @modèle à l'intérieur de cette ligne.
Comment puis-je accéder à l'imprimante dans le modèle de vue que j'ai passé? Est-ce même possible?
Merci beaucoup à vous tous.
OriginalL'auteur user3041439 | 2013-12-04
Vous devez vous connecter pour publier un commentaire.
et aussi vous devez passer votre modèle en vue partielle en
en deuxième paramètre. Je suppose que cet appel doit être
est juste une déclaration de vue type de Modèle. Le modèle est une propriété en vue avec le type déclaré dans @ modèle de déclaration. Et aussi, si vous ne passez pas de modèle en vue partielle, le Modèle de la propriété sera nulle et vous obtiendrez l'exception NullReferenceException lorsque vous utiliserez le Modèle de la propriété dans le contrôle GridView.cshtml vue.
Merci Dmytro pour expliquer. Il semble que je ne reçois pas les NullReferenceException par PAS explicitement en passant sur le Modèle de la vue partielle. Mais peut-être que c'est de bonne pratique de le faire de toute façon.
OriginalL'auteur Dmytro Rudenko
Il y a deux problèmes avec votre code.
Tout d'abord, vous devez explicitement passer votre modèle comme ceci:
Ensuite, parce que vous êtes déjà dans un bloc de code dans votre vue partielle.. vous n'avez pas besoin de le symbole @ .. et
Model
a une majuscule M.@model
est une directive pour vos points de vue/vues partielles. Pensez à cela comme une "configuration de la commande".Model
est une propriété réelle. C'est l'objet qui est passé dans la vue.. et est du type que vous avez spécifié avec la@model
directive.OriginalL'auteur Simon Whitehead