通过viewbag我每次循环它给这个错误
对象”不包含定义‘名称’
这我的行动
public ActionResult AssignTask()
{
var List = db.Employees.Select(x => new
{
id = x.id,
Name = x.Name
}).ToList();
ViewBag.Emp_data = List;
return View();
}
这是我的看法
此代码返回一个List<anonymous>
var List = db.Employees.Select(x => new
{
id = x.id,
Name = x.Name
}).ToList();
所以这就是为什么你不能访问Name
的属性foreach
在您的视图循环。
我会建议使用强类型的ViewModel类来保存数据,避免ViewBag。 该视图模型应该是模型文件夹,如下面的
public class EmployeeViewModel
{
public int ID { get; set; }
public string Name { get; set; }
}
如下更改控制器
public ActionResult AssignTask()
{
var model = db.Employees.Select(x => new EmployeeViewModel
{
ID = x.id,
Name = x.Name
}).ToList();
return View(model);
}
在您的视图
@model List<EmployeeViewModel>
<h2>AssignTask</h2>
<div class="row">
<div class="form-group">
<div style="overflow-y:scroll; overflow-x:hidden; height:400px;">
@foreach (var item in Model)
{
<div class="col-lg-4 col-md-4">
<label>@item.Name</label>
<input type="checkbox" class="checkbox" name="SelectEmp" value="@item.ID" />
</div>
}
</div>
</div>
</div>
您正在使用匿名类型的视图不知道。 你还是应该用你的Employee
类在你的选择:
var List = db.Employees.Select(x => new Employee
{
id=x.id,
Name=x.Name
}).ToList();
顺便说一句,你应该使用视图模型,而不是viewbag的携带数据。