我是ASP.NET MVC的新手。
我有一个问题如下。
在Controller中,我有一个像这样的代码。
var students= db.Sagirdler.Where(x => x.SinifID == sinif.SinifID).
Select(m => new {m.Name, m.Surname}).ToList();
TempData["Students"] = students;
return RedirectToAction("Index", "MyPage");
这是我在MyPageController中的索引操作,我在其中重定向并调用View。
public ActionResult Index()
{
ViewBag.Students = TempData["Students"];
return View();
}
在View中我使用此代码。
@{
ViewBag.Title = "Index";
var students = ViewBag.Students;
}
@foreach (var std in students)
{
@std.Name
<br/>
}
它说:
'object' does not contain a definition for 'Name'
有什么问题?我该如何解决?
答案 0 :(得分:2)
您想要使用
ViewBag.Students = students;
而不是TempData
。
我认为你想要实现的目标会更好地实现:
创建一个类
public class StudentViewModel
{
public string Name { get;set;}
public string Surname {get;set;}
}
然后在您的视图中使用
@model IEnumerable<StudentViewModel>
@foreach (var student in Model)
{
...
}
在您的控制器中
var students = db.Sagirdler.Where(x => x.SinifID == sinif.SinifID)
.Select(m => new StudentViewModel { Name = m.Name, Surname = m.Surname} )
.ToList();
return View(students);