Я создаю приложение Animal Shelter, и когда кто-то смотрит на животных, я отображаю его с помощью загрузочных карт.Я не знаю, как получить изображения для отображения, хотя.Я очень новичок в MVC и C #, поэтому я не понимаю многих ответов, которые размещены в Интернете на этот конкретный вопрос.
Модель:
public class Pet
{
public int Pet_ID { get; set; }
// Other properties
public string Photo { get; set; }
}
Контроллер:
public ActionResult ShowCats()
{
var cats = db.Pets.Where(c => c.Species_Type == Species_Type.Cat).ToList();
return View(cats);
}
Вид:
<div class="container">
@foreach (var item in Model)
{
<div class="card col-md-3">
<img class="center-block" src="@Html.DisplayFor(modelItem => item.Photo)" height="300" width="230" alt=@Html.DisplayFor(modelItem => item.Name) />
// other display tags
</div>
}
Создать () - ЭтоВот как я получаю изображение из загрузки
[HttpPost]
public ActionResult Create(Pet upload, HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var guid = Guid.NewGuid().ToString();
var path = Path.Combine(Server.MapPath("~/Uploads"), guid + fileName);
file.SaveAs(path);
string fl = path.Substring(path.LastIndexOf("\\"));
string[] split = fl.Split('\\');
string newpath = split[1];
string imagepath = "~/Uploads/" + newpath;
upload.Photo = imagepath;
db.Pets.Add(upload);
db.SaveChanges();
}
TempData["Success"] = "Upload successful";
return RedirectToAction("Index");
}
return View();
}
Я пробовал этот метод, но он мешал моему Create (), потому что он не мог преобразовать строку в байт (я изменил свою модель со строки Photo на byte [] Фото, чтобы попробовать именно этот способ).
public ActionResult GetImage( int id )
{
var photo = (new ApplicationDbContext()).Pets.Find(id).Photo;
return File( imageData, "image/jpg" );
}
это был вид для него:
<img class="center-block" src="@Url.Action("GetImage", "Pet", new { id = item.Pet_ID })" height="300" width="230" alt=@Html.DisplayFor(modelItem => item.Name) />