我正在尝试从 SQL 查询中打印出数据,但我遇到了一个又一个错误。
基本上,我想做的是从数据库中获取教师的一些数据,然后在我的 View 中列出这些数据。但是每次我尝试打印时,我都会收到此错误
ViewModel' does not contain a definition for 'FirstName' and no extension method 'FirstName' accepting a first argument of type 'ViewModel' could be found.
这是我的代码;
View 模型
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; }
}
}
Controller
public ActionResult Index()
{
string campus = Request.Params["Campus"];
if (campus != null)
{
if (campus == "Alle")
{
var teachers = (from t in db.Teachers
select t);
}
else
{
var teachers = (from t in db.Teachers
where t.Campus == campus
select t );
}
}
else
{
var teachers = (from t in db.Teachers
select t);
}
var Model = new ViewModel
{
Teachers = db.Teachers.ToList(),
};
return View(Model);
}
查看
@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>
}
我不确定它是否适用,但我已经尝试做几件事,包括将我的循环更改为
@foreach (var Teacher in Model.Teachers)
然后我收到类似的错误
'IEnumerable' does not contain a definition for 'Teachers' and no extension method 'Teachers' accepting a first argument of type 'IEnumerable' could be found
期待我能得到的任何帮助!
最佳答案
我看到一些没有意义的事情。
首先,你在哪里使用teachers
?
个人认为下面的代码比较合理:
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);
}
其次,您还必须初始化 ViewModel
的其他属性在上面的 Action 方法中。
现在让我们进入 View 。你向那里传递了一个类型为 ViewModel
的模型.当你想遍历教师序列时,你可以试试这个:
@foreach (var teacher in Model.Teachers)
{
<tr>
<td>
@teacher.FirstName
</td>
<td>
@teacher.LastName
</td>
<td>
@teacher.Email
</td>
<td>
@teacher.Campus
</td>
</tr>
}
以上所有内容都有意义前提是 db.Teachers
是一个 IEnumerable<Teacher>
.
关于c# - '模型'不包含 'Object"的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568568/