将数据从控制器传递到View-MVC

本文关键字:View-MVC 控制器 数据 | 更新日期: 2023-09-27 18:30:06

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

但它不起作用。我搞不清楚是怎么回事,因为我没有犯任何错误。

有人能帮忙吗?

提前感谢

控制器:

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>
        }

将数据从控制器传递到View-MVC

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>
}