我正在一个项目中,用户应该能够上传图像并将其显示在自己的页面上作为网格库。
我已经看过本教程,能够将图像从应用程序上传到数据库,并显示具有特定ID的图像。一切正常。
https://www.youtube.com/watch?v=5L5W-AE-sEs&
我的视图控制器如下:
[HttpGet]
public ActionResult View(int id)
{
Image imageModel = new Image();
using (portfolio_project_dbEntities db = new portfolio_project_dbEntities())
{
imageModel = db.Images.Where(x => x.ImageID == id).FirstOrDefault();
}
return View(imageModel);
}
视图部分:
<img src="@Url.Content(Model.ImagePath)" width="200"/>
现在,我希望能够在一个页面上显示多个图像(具有相同用户名的图像),但是我真的不知道如何做到这一点。 如何将多个图像从控制器传递到视图?还是在视图中这样做更好?
答案 0 :(得分:2)
FirstOrDefault
方法从集合中返回单个项目(或默认值)。因此,在代码中,您共享了以下问题:使用此表达式.Where(x => x.ImageID == id)
过滤图像,然后在其上调用FirstOrDefault
方法,这样最多会产生一个项目。
因此,如果要显示多个项目,请删除该FirstOrDefault
方法调用。在下面的示例中,我假设您的Image
对象具有UserId
类型的int
属性,并且您要使用与参数值相同的UserId
值来过滤Image对象。因此,请使用表达式在您的Where
方法中进行检查。
[HttpGet]
public ActionResult View(int id)
{
var images = new List<Image>();
var db = new portfolio_project_dbEntities())
{
images = db.Images
.Where(x => x.UserId == id)
.ToList();
}
// images is a list of Image objects. Let's pass it to the view.
return View(images);
}
现在,由于您要向视图传递Image
对象的集合,因此请确保将视图强类型化为Image
的集合。
@model IEnumerable<YourNamespaceHere.Image>
<h1>Images</h1>
@foeach(var img in Model)
{
<img src="@Url.Content(img .ImagePath)" width="200"/>
}