C# ';型号';不包含';“对象”;
我试图打印SQL查询中的数据,但一个接一个地出错 基本上,我想做的是从数据库中从教师那里获取一些数据,然后在我的视图中列出这些数据。然而,每次我尝试打印时,都会出现此错误 ViewModel“”不包含“FirstName”的定义,也不包含 扩展方法“FirstName”接受类型为的第一个参数 找不到“ViewModel” 这是我的密码 视图模型C# ';型号';不包含';“对象”;,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我试图打印SQL查询中的数据,但一个接一个地出错 基本上,我想做的是从数据库中从教师那里获取一些数据,然后在我的视图中列出这些数据。然而,每次我尝试打印时,都会出现此错误 ViewModel“”不包含“FirstName”的定义,也不包含 扩展方法“FirstName”接受类型为的第一个参数 找不到“ViewModel” 这是我的密码 视图模型 namespace Ability.Models { public class ViewModel { public v
namespace Ability.Models
{
public class ViewModel
{
public virtual IEnumerable<Teacher> Teachers { get; set; }
public Teacher Teacher { get; set; }
public virtual IEnumerable<Skill> Skills { get; set; }
public Skill Skill { get; set; }
}
}
查看
@model IEnumerable<Ability.Models.ViewModel>
<h2>Teachers at Thomas More</h2>
...
@foreach (var Teacher in Model)
{
<tr>
<td>
@Teacher.FirstName
</td>
<td>
@Teacher.LastName
</td>
<td>
@Teacher.Email
</td>
<td>
@Teacher.Campus
</td>
</tr>
}
但是我收到了一个类似的错误
“IEnumerable”不包含“教师”的定义
没有扩展方法“教师”接受类型的第一个参数
可以找到“IEnumerable”
期待我能得到任何帮助 我看到了一些没有意义的事情 首先,您在哪里使用
教师
就我个人而言,我认为以下代码更合理:
public ActionResult Index()
{
IEnumerable<Teacher> teachers = Enumerable.Empty<Teacher>();
string campus = Request.Params["Campus"];
if (campus != null)
{
if (campus == "Alle")
{
teachers = (from t in db.Teachers
select t);
}
else
{
teachers = (from t in db.Teachers
where t.Campus == campus
select t );
}
}
else
{
teachers = (from t in db.Teachers
select t);
}
var Model = new ViewModel
{
Teachers = teachers
};
return View(Model);
}
如果
db.Teachers
是一个IEnumerable
您将类型ViewModel
发送到视图,则上述所有操作都是有意义的:
var Model = new ViewModel
{
Teachers = db.Teachers.ToList(),
};
return View(Model);
但是它需要类型
IEnumerable作为一个实际的例子。您的模型是一个ViewModels列表。您需要使用@foreach(Model.Teachers中的var-Teacher)
谢谢您的帮助,我按照您的建议更改了代码。但是,我仍然得到红色下划线,错误为“'IEnumerable'不包含'Teachers'的定义,并且找不到接受'IEnumerable'类型的第一个参数的扩展方法'Teachers'”nvm,问题已解决,非常感谢您的支持answer@NicolasDecroos不客气。我很高兴我帮了忙:)嗨,谢谢你的帮助。我已经尝试了您的解决方案,但它仍然给我错误“'IEnumerable'不包含'Teachers'的定义,并且找不到接受'IEnumerable'类型的第一个参数的扩展方法'Teachers'。如果这是一个明显的错误,很抱歉,这是一个全新的错误。@NicolasDecroos:听起来您没有成功更改视图顶行上的模型类型声明。你能确认吗?这是[AT]model Ability.Models行。ViewModel@NicolasDecroos:有趣。哪一行代码会引发这个错误?对不起,我刚刚完全复制了你的代码行,现在它可以工作了。一定是个小错误。非常感谢你的帮助
public ActionResult Index()
{
IEnumerable<Teacher> teachers = Enumerable.Empty<Teacher>();
string campus = Request.Params["Campus"];
if (campus != null)
{
if (campus == "Alle")
{
teachers = (from t in db.Teachers
select t);
}
else
{
teachers = (from t in db.Teachers
where t.Campus == campus
select t );
}
}
else
{
teachers = (from t in db.Teachers
select t);
}
var Model = new ViewModel
{
Teachers = teachers
};
return View(Model);
}
@foreach (var teacher in Model.Teachers)
{
<tr>
<td>
@teacher.FirstName
</td>
<td>
@teacher.LastName
</td>
<td>
@teacher.Email
</td>
<td>
@teacher.Campus
</td>
</tr>
}
var Model = new ViewModel
{
Teachers = db.Teachers.ToList(),
};
return View(Model);
@model IEnumerable<Ability.Models.ViewModel>
@model Ability.Models.ViewModel
@foreach (var Teacher in Model.Teachers)