0
我收到一个错误说:传递到字典的模型项的类型为“System.Data.Linq.DataQuery`1 [Models.MailListViewModel]”
传递到字典的模型产品类型'System.Data.Linq.DataQuery`1 [WebUI.Models.MailListViewModel]',但是这个字典需要一个类型为'WebUI.Models.MailListViewModel'的模型项。
这是在我的控制器:
public ViewResult List()
{ var mailToShow = from m in mailRepository.Mail
join p in profilesRepository.Profiles on m.SenderId equals p.ProfileId
select new MailListViewModel
{
SenderId = m.SenderId,
ProfileId = p.ProfileId,
UserName = p.UserName,
Subject = m.Subject
};
return View(mailToShow);
}
这是我MailListViewModel:
public class MailListViewModel
{
public int SenderId;
public int ProfileId;
public string UserName;
public string Subject;
}
这是我的看法:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.Models.MailListViewModel>" %>
<% foreach (var m in (IEnumerable)Model)
{ %>
<tr>
<td>
</td>
<td>TODO image</td>
<td>
<%: Model.SenderId %></td>
<td><%: Model.Subject%></td>
</tr>
<% } %>
错误消息似乎有冲突,说我正在使用正确的模式。
我该怎么办?
很好,现在几乎在工作! 我更新了视图之后,我收到了以下消息: CS1061:'object'不包含'Subject'的定义,并且没有可以找到接受类型'object'的第一个参数的扩展方法'Subject'缺少using指令或程序集引用) ,他们强调: <%:m.Subject%> 智能感知说: 无法解析符号“主题” 我应该尝试下? – Castielle 2010-08-24 10:19:53
如果您仍将模型转换为IEnumerable,则可能是这种情况。我相应地更新了我的答案。 – 2010-08-24 10:37:13
Closer :)现在我收到一条错误消息: “查询包含对在不同数据上下文中定义的项目的引用。” 它指的是:“<%foreach(模型中的变量)” – Castielle 2010-08-24 10:51:58