2009-01-17 7 views
2

Je construis ma première application ASP.Net MVC et j'ai un problème pour accéder aux résultats d'une requête linq to sql dans l'une de mes vues.Comment puis-je accéder aux propriétés ViewData dans ma vue?

Voici mon contrôleur:

public ActionResult Details(int id) 
    { 
     var dataContext = new BuffetSuppliersDBDataContext(); 
     var supplier = from m in dataContext.BO_Suppliers 
         where m.SupplierID == id 
         select m; 

     return View(supplier); 
    } 

Comment puis-je accéder à la propriété supplier.SupplierName dans ma page de vue, je l'ai vu des exemples en utilisant une boucle foreach et coulée ViewData.Model à IEnumerable, mais il n'y a pas grand-chose point dans l'utilisation d'une boucle que je ne retourne qu'une seule ligne.

Répondre

3

Choisissez le premier objet, puis utilisez-le comme modèle. Une vue fortement typée (par exemple ViewPage <Supplier>) rendra l'accès aux propriétés du modèle trivial.

var dataContext = new BuffetSuppliersDBDataContext(); 
    var supplier = (from m in dataContext.BO_Suppliers 
        where m.SupplierID == id 
        select m).FirstOrDefault(); 

    ViewData.Model = supplier; 

    return View(); 

Avec une page vue définie comme

public class Details : ViewPage<Supplier> 
    { 
    } 

et dans la vue à l'aide

<label for="SupplierName" class='details-label'>Supplier Name:</label> 
    <span class='details-data'> <%= ViewData.Model.Name %> </span> 
+0

Vous pouvez faire directement Model.Name au lieu de ViewData.Model.Name, puisque le modèle est également une propriété de ViewPage

Questions connexes