如何显示URL存储的图像从数据库中的ASP.净剃须刀

本文关键字:图像 数据库 ASP 剃须刀 存储 何显示 显示 URL | 更新日期: 2023-09-27 18:02:01

所涉及的数据库包括两个实体:类型为int &文本类型的ImagePathID保存一个自动递增的数字,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将控制器中的ID1中的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>
        }

如何显示URL存储的图像从数据库中的ASP.净剃须刀

您只需在查询中过滤图像

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动态地传递信息到您的页面,而无需重新加载。