我应该手动为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: <% } %>
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我有这个代码:
NorthwindDataContext db = new NorthwindDataContext();
ViewData["Message"] = "Welcome to ASP.NET MVC!";
var products = from p in db.Products
select p;
return View(products);
Run Code Online (Sandbox Code Playgroud)
我在我的视图中更改了这样的声明,现在它可以工作:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcAppNorthwind.Models.Product>>" %>
Run Code Online (Sandbox Code Playgroud)
但是,如果要在同一视图中显示或使用多个模型的数据?那你怎么做的?
将"products"的类型从var更改为IEnumerable <MvcAppNorthwind.Models.Product>,并确保您的演员反映相同.
在回答上一个问题时,您可以将对象分配给ViewData中的字典项,或者更好地创建一个包含视图所需的所有数据的视图模型.这样,您可以通过拥有特定于您的视图的模型来更好地分离关注点.
| 归档时间: |
|
| 查看次数: |
14303 次 |
| 最近记录: |