我应该手动为GetEnumerator创建定义吗?好像它应该知道...
我收到以下错误:
foreach声明无法操作 类型的变量 'MvcAppNorthwind.Models.Product' 因为 'MvcAppNorthwind.Models.Product'确实如此 不包含公共定义 '的GetEnumerator'
Line 9: <h2><%: ViewData["Message"] %></h2>
Line 10: <ul>
Line 11: <% foreach (MvcAppNorthwind.Models.Product p in ViewData.Model) { %>
Line 12: <li><%= p.ProductName %></li>
Line 13: <% } %>
在我的控制器中,我有这段代码:
NorthwindDataContext db = new NorthwindDataContext();
ViewData["Message"] = "Welcome to ASP.NET MVC!";
var products = from p in db.Products
select p;
return View(products);
我在我的视图中更改了这样的声明,现在它可以正常工作:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcAppNorthwind.Models.Product>>" %>
但是,如果要在同一视图中显示或使用多个模型的数据?你是怎么做到的?
答案 0 :(得分:6)
将“产品”的类型从var更改为IEnumerable <MvcAppNorthwind.Models.Product
&gt;并确保你的演员表现出同样的效果。
在回答上一个问题时,您可以将对象分配给ViewData中的字典项目,或者更好地创建一个包含视图所需的所有数据的视图模型。通过这种方式,您可以通过拥有特定于您视图的模型来更好地分离关注点。