如何显示URL存储的图像从数据库中的ASP.净剃须刀
本文关键字:图像 数据库 ASP 剃须刀 存储 何显示 显示 URL | 更新日期: 2023-09-27 18:02:01
所涉及的数据库包括两个实体:类型为int &文本类型的ImagePath
。ID
保存一个自动递增的数字,ImagePath
保存一个特定图像的URL。目前,我已经设法显示与以下代码在数据库中找到的所有图像。
Index.cshtml
@foreach (var item in Model)
{@Html.DisplayFor(modelItem => item.ImagePath)
<img src="~/Images/@Html.DisplayFor(modelItem => item.ImagePath)" />
ImageController.cs
public class ImageController : Controller
{
private ImageDBContext db = new ImageDBContext();
public ActionResult Index()
{
return View(db.Images.ToList());
}
我想显示一个特定的图像,而不是在数据库中找到的所有图像。有人可以帮助我在显示ID
数据库中存储的特定URL图像吗?(即。显示图像从 ImagePath
通过调用ID在。cshtml)
更新:
为了显示db.image
表中选择ImageID
= 2来表示相关url存储图像的图像,编写了下面的代码。
ImageController.cs
public ActionResult Index(int ImageID = 2)
{
return View(db.Images.Where(img => img.ID == ImageID).ToList());
}
索引。cshtml
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.ImagePath)
<img src="~/Images/@Html.DisplayFor(modelItem => item.ImagePath)"/>
继续,我想从索引中选择ImageID
。cshtml将控制器中的ID
1中的int ImageID = 2
替换为CC_10。正在考虑在@html.DisplayFor
中添加ImageID == 2
,但不知道如何。知道如何从索引中选择ImageID
吗?CSHTML代码表示相关的图像?*
最终目标将下面的<img src=""/>
替换为从给定的ID
调用imagePath
。
<a href="https://www.facebook.com/vellanevets" target="_blank"> <img src="images/social/instagram.png" /></a>
<a href="http://instagram.com/nevetsvella/" target="_blank"> <img src="images/social/instagram.png" alt="" /></a>
<a href="http://vimeo.com/user16587212" target="_blank"> <img src="images/social/vimeo.png" alt="" /></a>
<a href="mailto:steven.vella93@gmail.com" target="_blank"> <img src="images/social/email.png" alt="" /></a>
}
您只需在查询中过滤图像
public class ImageController : Controller
{
private ImageDBContext db = new ImageDBContext();
public ActionResult Index()
{
[.. some code to decide the id ..]
return View(db.Images
.Where(x => x.ID = [myId]
.ToList());
}
您可以使用LINQ返回数据库中的特定文档。假设您的数据列名为ID
,您可以执行以下操作:
public class ImageController : Controller
{
private ImageDBContext db = new ImageDBContext();
public ActionResult Index(int intValue){
var imagesId = db.Images.Where(img -> img.ID == intValue).ToList();
return View(imagesId);
}
}
这将返回Id等于intValue的所有图像。
作为一个旁白,似乎你只是试图检索1个文档,如果是这种情况下,你可以(而且应该)使用FirstOrDefault,像这样的var imageWithId = db.Images.FirstOrDefault(img -> img.ID == intValue);
编辑更新+注释:
似乎您希望在索引视图中对客户端信息进行操作。有多种方法可以做到这一点,一种是通过将一个值传递给控制器来重新加载页面,该值将把正确的模型(在你的情况下,是一个图像)传递给你的视图。
如果您希望用模型中的值替换值,您可以遍历模型并替换css属性。选择你想要替换的src元素,然后使用。
var imagePath = @Html.Raw(Json.Encode(Model.ImagePath));
$(this).attr("src", imagePath);
使用JQuery重新加载你的页面
$(document).on('event', '.selector', function() {
//Set your ID to the Id property of the element
var idToPass = this.id;
clicked
//This will simulate an HTTP request, your action will return your View with your image
window.location.replace('@Url.Action("Index", "Image")?ImageID=' + idToPass)
});
将event替换为希望触发重新加载的事件。例如'click'
。将选择器替换为一个类,为所有你希望被点击的元素指定一个类。
注意:小心!在锚点上使用on.('click)
可以产生有趣的结果。
您还可以使用AJAX动态地传递信息到您的页面,而无需重新加载。