【问题标题】:Pass data from controller to View - MVC将数据从控制器传递到视图 - MVC
【发布时间】:2013-09-03 15:42:21
【问题描述】:

我正在尝试进行查询以接收数据库中的所有数据以显示在我的视图中。

但它不起作用。我无法弄清楚发生了什么,因为我没有收到任何错误。

有人可以帮忙吗?

提前致谢

控制器:

public ActionResult Details(int id = 0)
            {
                Persons p= db.persons.Find(id);

                var query = from a in db.images
                            where a.Id_Person== id
                            select a.FileName;
                ViewBag.ImgRev= query;

                if (mag == null)
                {
                    return HttpNotFound();
                }

                return View(p);
            }

查看:

@foreach (var p in ViewBag.ImgRev)
        { 
          <div>
            <img src="~/Files/" + @p /></div>
        }

【问题讨论】:

  • 你调试过,看到有数据了吗?
  • 已经检查过了..它的空值..我做错了什么?我想念一些东西

标签: c# mysql asp.net asp.net-mvc


【解决方案1】:

linq 语句在分配给ViewBag 之前不会进行评估。

试试:

控制器:

ViewBag.ImgRev = query.ToList();

查看:

@ {
    var imgList = ViewBag.ImgRev as IEnumerable<string>;
}

@foreach (var p in imgList)
{ 
    <div><img src="~/Files/" + @p /></div>
}

使用 ViewModel 的替代方案:

public class SomePageViewModel
{
    public Persons Persons { get; set; }
    public IEnumerable<string> Files { get; set; }
}

控制器:

...
var model = new SomePageViewModel { Persons = p, Files = query.ToList() };
return model;

查看:

@foreach (var file in Model.Files)
{ 
    <div><img src="~/Files/" + @file /></div>
}

【讨论】:

  • romoku 你的 来自哪里?
  • 类名我猜到了。
  • 我尝试了您的代码,但现在出现此错误:对象引用未设置为对象的实例。 :foreach 断点
  • 我在控制器中设置了一个断点并检查了查询,但仍然为空......
  • 确保已连接到数据库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
相关资源
最近更新 更多