'object'在Asp.Net MVC中不包含定义错误

时间:2014-03-08 12:00:05

标签: c# asp.net-mvc

我是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'

有什么问题?我该如何解决?

1 个答案:

答案 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);