Pourquoi ne puis-je pas foreach par le biais de mon ViewData ou Modèle?
Je continue à recevoir des erreurs en essayant de parcourir mon ViewData dans le point de vue là... j'ai même essayé fortement tapant la vue de IEnumerable(App.Modèles.Espace de noms) et à l'aide d'un Modèle, en vain. Soit j'obtiens une erreur par manque d'un GetEnumerable méthode ou de type non valide casting... une idée de comment je le faire?
Modèle...
public IQueryable<Product> getAllProducts()
{
return (from p in db.Products select p);
}
Contrôleur...
public ActionResult Pricing()
{
IQueryable<Product> products = orderRepository.getAllProducts();
ViewData["products"] = products.ToList();
return View();
}
Vue...
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Pricing
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Pricing</h2>
<div>
<select class="product">
<%foreach(var prod in ViewData["products"]){%>
<option><%=prod.Title %></option>
<%} %>
</select><select></select>
</div>
</asp:Content>
Vous devez vous connecter pour publier un commentaire.
Essayer cela avec le casting:
Je suis dans une situation similaire et cela a fonctionné pour moi.
Pourquoi tu fais comme ça de toute façon? Pourquoi ne pas le faire:
de votre point de vue. Puis dans votre contrôleur de l'action:
Alors vous n'avez pas à utiliser
ViewData
à tous.var
est un implicite de la déclaration de type et signifie que vous n'avez pas à connaître le type exact de la variable lorsque vous avez écrit le code.Si vous obtenez la liste de plus de deux modèle et que vous souhaitez montrer deux modèle dans une liste que vous devez utiliser comme ça..
Créez votre deux le premier modèle est Étudiant et la deuxième est l'Enseignant.
//Création d'un contrôleur de