Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 在ViewBag中填充匿名类型导致模型活页夹问题_Entity Framework_Asp.net Mvc 3 - Fatal编程技术网

Entity framework 在ViewBag中填充匿名类型导致模型活页夹问题

Entity framework 在ViewBag中填充匿名类型导致模型活页夹问题,entity-framework,asp.net-mvc-3,Entity Framework,Asp.net Mvc 3,有人能告诉我我做错了什么吗?:-) 我有一个简单的疑问: var sample = from training in _db.Trainings where training.InstructorID == 10 select new { Something = training.Instructor.UserName }; 我把这个传给ViewBag ViewBag.Sample = sample; 然后我想在我的视图中访问它,如下

有人能告诉我我做错了什么吗?:-)

我有一个简单的疑问:

 var sample = from training in _db.Trainings
              where training.InstructorID == 10
              select new { Something = training.Instructor.UserName };
我把这个传给ViewBag

ViewBag.Sample = sample;
然后我想在我的视图中访问它,如下所示:

@foreach (var item in ViewBag.Sample) {
    @item.Something
}
我得到的错误消息“object”不包含“Something”的定义。如果我只把
@item
,我会得到结果
{Something=SomeUserName}


谢谢你的帮助。

这是办不到的。ViewBag是动态的,问题是匿名类型生成为内部类型。我建议您使用视图模型:

public class Instructor
{
    public string Name { get; set; }
}
然后:

public ActionResult Index()
{
    var mdoel = from training in _db.Trainings
                 where training.InstructorID == 10
                 select new Instructor { 
                     Name = training.Instructor.UserName 
                 };
    return View(model);
}
并且认为:

@model IEnumerable<Instructor>
@foreach (var item in ViewBag.Sample) {
    @item.Something
}
@model IEnumerable
@foreach(ViewBag.Sample中的var项){
@项目,一些东西
}

如果您想发送视图数据,但不想发送模型 你可以使用与上面答案相同的答案 在控制器中

enter code here


ViewData[Instractor] = from training in _db.Trainings
                 where training.InstructorID == 10
                 select new Instructor { 
                     Name = training.Instructor.UserName 
                 };
在视图中,您需要将其投射到

`IEnumerable<Instructor>`

+1-注意他是如何选择一位
新讲师的
具体类型-而不是匿名类型。这样他就可以访问对象中的信息,这很有帮助。谢谢你的回答。
@model IEnumerable<Instructor>
IEnumerable<instructors> Instructors =(IEnumerable<Instructor>)ViewData[Instractor];
@foreach (var item in Instructors ) {
    @item.Something
}