2013-06-17 2 views
0

Il existe un modèle dans mon projetUtiliser une variable de commande en vue ASP.NET MVC4

using System; 

namespace Argussite.SupplierServices.ViewModels 
{ 
    public class UsersPage 
    { 
    public Guid SupplierId { get; set; } 
    public string SupplierFullName { get; set; } 
    public bool ActionsAllowed { get; set; } 
    } 
} 

-je utiliser mon modèle dans le contrôleur et définir les propriétés

public ActionResult Index(Guid id) 
    { 
     var supplierOfUser = Context.Suppliers.AsNoTracking() 
      //.Include(e => e.Supplier) 
      .FirstOrDefault(e => e.Id == id); 

     string SupplierId = id.ToString(); 
     string SupplierFullName = supplierOfUser.FullName.ToString(); 
     bool ActionsAllowed = supplierOfUser.Active; 

     return View(); 
    } 

puis-je utiliser que en vue, mais je ne sais pas comment obtenir mes propriétés dans la vue?

Répondre

1

Créer une nouvelle UsersPage et affecter les propriétés que vous avez déjà à ses propriétés, puis passer le nouveau UsersPage à la vue:

public ActionResult Index(Guid id) 
    { 
     var supplierOfUser = Context.Suppliers.AsNoTracking() 
      //.Include(e => e.Supplier) 
      .FirstOrDefault(e => e.Id == id); 

     var usersPage = new UsersPage(); 
     usersPage.SupplierId = id.ToString(); 
     usersPage.SupplierFullName = supplierOfUser.FullName.ToString(); 
     usersPage.ActionsAllowed = supplierOfUser.Active; 

     return View(usersPage); 
    } 
1

Il est difficile de vous aider avec le code exact que je ne sais pas ce que vous voulez faire votre point de vue, cela est une idée générale de la façon dont vous êtes censé passer et utiliser votre modèle dans votre vue

contrôleur

public ActionResult Index(Guid id) 
{ 
    var supplierOfUser = Context.Suppliers.AsNoTracking() 
     .FirstOrDefault(e => e.Id == id); 

    var usersPage = new UsersPage 
    { 
     SupplierId = supplierOfUser.Id, 
     SupplierFullName = supplierOfUser.FullName, 
     ActionsAllowed = supplierOfUser.Active 
    } 

    return View(usersPage); // <-- Send viewmodel to view 
} 

VIEW

// Declare model 
@model Argussite.SupplierServices.ViewModels.UsersPage 
... 
//Use your model here at will 
@Html.DisplayFor(modelItem => item.FullName) 

... 
@Html.EditorFor(model => model.FullName) 
@Html.ValidationMessageFor(model => model.FullName) 
+0

Pourquoi IEnumerable quand il devient FirstOrDefault? – Marko

+0

@Marko: Correction de cela, merci. Copier une erreur de pâte. –

1

pour utiliser votre les données du contrôleur à la vue, vous devez retourner la vue avec votre modèle dans le paramètre:

return View(supplierOfUser); 

À votre avis, vous auriez aussi besoin de définir le modèle:

@model YourModel 

Notez que vous n'avez pas besoin de définir vos informations de fournisseur dans d'autres variables (seul le paramètre supplierOfUser est requis).

2

Tout d'abord votre action du contrôleur doit envoyer cette instance de modèle à la vue comme ceci:

return View(supplierOfUser); 

Vous avez besoin de ce en haut de votre point de vue:

@model Argussite.SupplierServices.ViewModels.UsersPage 

Ensuite, tout ce que vous devez faire est whereever que vous voulez utiliser votre modèle dans la vue faire:

@Model.SupplierFullName 

Si vous souhaitez utiliser d'autres propriétés dans la vue que vous pouvez les placer dans une variable ViewBag dynamique comme celui-ci :

ViewBag.supplierOfUser = supplierOfUser.FullName.ToString(); 

puis sur votre vue, vous pouvez utiliser cette valeur comme ceci:

@ViewBag.supplierOfUser 
1

le meilleur moyen est d'établir un modèle fortement typé dans le v IEW:

@model Argussite.SupplierServices.ViewModels.UsersPage

Ensuite, référence uniquement les propriétés sur le modèle, par exemple

@Html.EditorFor(model => model.SupplierFullName)

Questions connexes