Asp.net mvc 传入字典的模型项的类型为';System.Data.Linq.DataQuery`

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]”的模型项 我已经搜索了很多,但仍然不能正常

我正在用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实现有一个特定的标记。