涉及的数据库包括两个类型为int&的ID
实体。 ImagePath
类型文字。 ID
保存自动递增的数字,ImagePath
保存特定图像的网址。目前,我已设法使用以下代码显示数据库中找到的所有图像。
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
通过.cshtml中的被叫ID显示图像)
非常感谢您的时间和帮助。谢谢。
写下以下代码,以显示选择db.image
= 2的ImageID
表中的图像,以表示相关的网址存储图像。
ImageController.cs
public ActionResult Index(int ImageID = 2)
{
return View(db.Images.Where(img => img.ID == ImageID).ToList());
}
Index.cshtml
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.ImagePath)
<img src="~/Images/@Html.DisplayFor(modelItem => item.ImagePath)"/>
继续我想从控制器中ImageID
的 Index.cshtml 而不是int ImageID = 2
中选择public ActionResult Index()
。考虑在ImageID == 2
中添加@html.DisplayFor
,但不知道如何。任何想法如何从index.cshtml代码中选择ImageID
来表示相关的图像?*
结束目标
将以下<img src=""/>
替换为从给定的imagePath
调用ID
。
<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>
}
答案 0 :(得分:0)
您可以使用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属性。选择要替换的srcs的元素,然后使用。
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)
});
将事件替换为您希望触发重新加载的事件。例如'click'
。将选择器替换为您希望可以单击的所有元素的类。
注意:小心!在锚点上使用on.('click)
可以产生有趣的结果。
您还可以使用AJAX动态地将信息传递到您的页面而无需重新加载。
答案 1 :(得分:0)
您只需在查询中过滤图片
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());
}
&#13;