Asp.net mvc 传入字典的模型项的类型为';System.Data.Linq.DataQuery`
我正在用asp.net开发MVC4。一切都很好,直到我得到错误的说法 System.InvalidOperationException:传递到字典的模型项的类型为“System.Data.Linq.DataQuery'1[FYPManagment.OfferedProject]”,但此字典需要类型为“System.Collections.Generic.IEnumerable'1[FYPManagment.Models.SupervisorModel]”的模型项 我已经搜索了很多,但仍然不能正常工作 我的主管模型是:Asp.net mvc 传入字典的模型项的类型为';System.Data.Linq.DataQuery`,asp.net-mvc,Asp.net Mvc,我正在用asp.net开发MVC4。一切都很好,直到我得到错误的说法 System.InvalidOperationException:传递到字典的模型项的类型为“System.Data.Linq.DataQuery'1[FYPManagment.OfferedProject]”,但此字典需要类型为“System.Collections.Generic.IEnumerable'1[FYPManagment.Models.SupervisorModel]”的模型项 我已经搜索了很多,但仍然不能正常
public class SupervisorModel
{
public OfferedProject offerproject { get; set; }
}
我的主管是:
public class SupervisorController : Controller
{
DataContextDataContext dc = new DataContextDataContext();
public ActionResult ViewProject()
{
var projectdata = (from s in dc.OfferedProjects
where s.FK_sup_ID == 2
select s);
return View(projectdata);
}
}
@using FYPManagment;
@{
List<OfferedProject> projectdata = (List<OfferedProject>)ViewData["projectdata"];
Layout = null;
}
@model IEnumerable<FYPManagment.Models.SupervisorModel>
<!DOCTYPE html>
AND
@foreach (var item in Model)
{
<tr>
<td>@item.offerproject.proj_title</td>
<td>@item.offerproject.proj_description</td>
<td><a href="#">Send Request</a></td>
</tr>
}
我的观点是:
public class SupervisorController : Controller
{
DataContextDataContext dc = new DataContextDataContext();
public ActionResult ViewProject()
{
var projectdata = (from s in dc.OfferedProjects
where s.FK_sup_ID == 2
select s);
return View(projectdata);
}
}
@using FYPManagment;
@{
List<OfferedProject> projectdata = (List<OfferedProject>)ViewData["projectdata"];
Layout = null;
}
@model IEnumerable<FYPManagment.Models.SupervisorModel>
<!DOCTYPE html>
AND
@foreach (var item in Model)
{
<tr>
<td>@item.offerproject.proj_title</td>
<td>@item.offerproject.proj_description</td>
<td><a href="#">Send Request</a></td>
</tr>
}
@使用FYPManagment;
@{
列表项目数据=(列表)视图数据[“项目数据”];
布局=空;
}
@模型IEnumerable
及
@foreach(模型中的var项目)
{
@item.offerproject.proj_标题
@item.offerproject.proj_说明
}
当前,变量projectdata
仍然是类型为IQueryable
的查询表达式。尚未对其进行评估/执行。projectdata
的类型与视图的强类型不同(IEnumerable
)。这就是您得到类型不匹配错误的原因
首先,更新操作方法以返回执行查询表达式的结果。可以对查询表达式调用ToList()
方法
public ActionResult ViewProject()
{
var projectdata = (from s in dc.OfferedProjects
where s.FK_sup_ID == 2
select s).ToList();
return View(projectdata);
}
现在,请确保视图的强类型与从操作方法发送的类型相同:
@model IEnumerable<FYPManagment.Models.OfferedProject>
<table>
@foreach (var item in Model)
{
<tr>
<td>@item.offerproject.proj_title</td>
<td>@item.offerproject.proj_description</td>
</tr>
}
</table>
@model IEnumerable
@foreach(模型中的var项目)
{
@item.offerproject.proj_标题
@item.offerproject.proj_说明
}
请注意,“模型视图控制器”标记用于回答有关模式的问题。ASP.NET-MVC实现有一个特定的标记。