gpt4 book ai didi

asp.net - 如何显示我数据库中的所有图像?

转载 作者:行者123 更新时间:2023-11-28 00:07:12 24 4
gpt4 key购买 nike

我正在 MVC 4 visual studio 中处理一个项目。我要做的是从我的数据库中选择所有图像并在我的 View 中显示所有图像。

在我的数据库中,我有 3 列:编号 |文件标题 |文件路径

图像在一个文件夹中。

我将其与下拉列表一起使用,当我选择值时,显示图像。

但我的问题是,如何在列表中同时显示所有图像?

这是我的代码:

型号:

  public class Image
{
public SelectList ImageList { get; set; }

public Image()
{
ImageList = GetImages();
}

public SelectList GetImages()
{
var list = new List<SelectListItem>();
string connection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

using (var con = new SqlConnection(connection))
{
con.Open();
using (var command = new SqlCommand("SELECT * FROM myimage", con))
{
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string title = reader[1] as string;
string imagePath = reader[2] as string;
list.Add(new SelectListItem() { Text = title, Value = imagePath });
}
}
con.Close();
}
return new SelectList(list, "Value", "Text");
}
}

Controller :

public ViewResult ShowImages()
{
Image image = new Image();
return View(image);
}

VIEW(尝试同时显示所有图像):

@foreach (var image in Model.ImageList)
{
<img src="@Url.Content(image)" alt="image" id="image" style="width:200px;height:200px;" />
}

最佳答案

我建议稍微重构一下您的代码。下面是一些简单的东西,但是正确地分隔了代码。以下将在页面上一次显示所有图像。

public class Image
{
public string Title {get; set;}
public string ImagePath {get; set;}
}

public class ImageRepository
{
public static IEnumerable<Image> GetImages(){
var list = new List<Image>();
string connection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

using (var con = new SqlConnection(connection))
{
con.Open();
using (var command = new SqlCommand("SELECT * FROM myimage", con))
{
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string title = reader[1] as string;
string imagePath = reader[2] as string;
list.Add(new Image() { Title = title, ImagePath = imagePath });
}
}
con.Close();
}
return list;
}
}

public ViewResult ShowImages()
{
var images = ImageRepository.GetImages();
return View(images);
}


@foreach (var image in Model)
{
<img src="@Url.Content(image.ImagePath)" alt="image.Title" style="width:200px;height:200px;" />
}

要将它放在下拉列表中,您可以将 Controller 代码修改为以下内容(您不希望在 SQL 代码中包含该 SelectList)。

public ActionResult ShowImages()
{
var images = ImageRepository.GetImages();
var imageSelectList = new SelectList(images, "ImagePath", "Title");
return View(imageSelectList);
}

@Html.DropDownList("ImageList", Model);

我会从这里更进一步,并有一个合适的 ViewModel。

public class ShowImagesViewModel{
public ShowImagesViewModel(IEnumerable<Image> images){
this.Images = images;
}

public IEnumerable<Image> Images {get; private set;}
public SelectList ImageSelectList {
get
{
return new SelectList(images, "ImagePath", "Title");
}
}

}

public ActionResult ShowImages()
{
var images = ImageRepository.GetImages();
var model = new ShowImagesViewModel(images);
return View(model);
}

@Html.DropDownList("ImageList", Model.ImageSelectList);

关于asp.net - 如何显示我数据库中的所有图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17859728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com