Не могу заполнить таблицу с изображениями, используя бритву - PullRequest
1 голос
/ 29 февраля 2020

«IEnumerable» не содержит определения для «ImageName», и невозможно найти доступный метод расширения «ImageName», принимающий первый аргумент типа «IEnumerable» (вы пропустили директиву using или ссылку на сборку?

Является ли текущая ошибка, которую я получаю, однако способ, которым я об этом говорю, кажется неправильным, если кто-то может помочь или указать мне правильное направление, это будет оценено. (Также я использую. net core 2.1, так как мои школьные компьютеры не поддерживают более поздние версии: /)

Вот вид:

@model IEnumerable<Lab2Phase1.Models.Car>  

@{  
    ViewData["Title"] = "Index";  
}  

<strong>Index</strong>  

<p>  
    <a asp-action="Create">Create New</a>  
</p>  
<div class="col-md-8">
    <form action="/Cars" method="post">
        @Html.TextBox("search")
        <input type="submit" />
    </form>
</div>
<table class="table">  
    <thead>  
        <tr>  
            <th>  
                @Html.DisplayNameFor(model => model.Id)  
            </th>  
            <th>  
                @Html.DisplayNameFor(model => model.Model)  
            </th>  
            <th>  
                @Html.DisplayNameFor(model => model.TopSpeed)  
            </th>  
            <th>  
                @Html.DisplayNameFor(model => model.ImageName)
            </th>  
            <th></th>  
        </tr>  
    </thead>  
    <tbody>  
@foreach (var item in Model) {  
        <tr>  
            <td>  
                @Html.DisplayFor(modelItem => item.Id)  
            </td>  
            <td>  
                @Html.DisplayFor(modelItem => item.Model)  
            </td>  
            <td>  
                @Html.DisplayFor(modelItem => item.TopSpeed)  
            </td>  
            <td>  
                <img src="~/Content/images/@Html.DisplayFor(modelItem => modelItem.ImageName)" style="height:200px;width:200px;"/>  
            </td>  
            <td>  
                @Html.ActionLink("Edit", "Edit", new { id = item.Id }) |  
                @Html.ActionLink("Delete", "Delete", new { id = item.Id }, new { onclick = "return confirm('Are you sure to delete?')" })  
            </td>  
        </tr>  
}  
    </tbody>  
</table>  

Вот контроллер:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Threading.Tasks;   
using Lab2Phase1.Models;  
using Microsoft.AspNetCore.Mvc;  
using Lab2Phase1.CarsContext;
using System.Collections.Specialized;
using System.Drawing;

namespace Lab2Phase1.Controllers  
{  
    public class CarsController : Controller  
    {  

        EFDataContext _dbContext = new EFDataContext();  
        public IActionResult Cars()  
        {  
            var data = this._dbContext.Cars.ToList();

            return View(data);          
        }  

        [HttpPost]
        public IActionResult Cars(string search)  
        {  
            Console.WriteLine("boot");
            //search = Request.Form["search"].ToString(); 
            var data = _dbContext.Cars.Where(c => c.Model.Contains(search));


            return View(data);          
        }  

        public IActionResult Create()  
        {  
            return View();  
        }  

        [HttpPost]  
        public IActionResult Create([Bind("Id,Model,TopSpeed,ImageName")]Car model)  
        {  
            ModelState.Remove("Id");
            model.Model = Request.Form["Model"];
            model.TopSpeed = Request.Form["TopSpeed"];
            model.ImageName = Request.Form["ImageName"];

            if (ModelState.IsValid)  
            {  
                _dbContext.Cars.Add(model);  
                _dbContext.SaveChanges();  
                return RedirectToAction("cars");  
            }  
            return View();  
        }  

        public IActionResult Edit(int id)  
        {  
            Car data = _dbContext.Cars.Where(p => p.Id == id).FirstOrDefault();  
            return View("Create", data);  
        }  

        [HttpPost]  
        public IActionResult Edit(Car model)  
        {  
            ModelState.Remove("Id");
            model.Id = Int32.Parse(Request.Form["Id"]);
            model.Model = Request.Form["Model"];
            model.TopSpeed = Request.Form["TopSpeed"];
            model.ImageName = Request.Form["ImageName"];

            if (ModelState.IsValid)  
            {  
                _dbContext.Cars.Update(model);  
                _dbContext.SaveChanges();  
                return RedirectToAction("cars");  
            }  
            return View("Create", model);  
        }  

        public IActionResult Delete(int id)  
        {  
            Car data = _dbContext.Cars.Where(p => p.Id == id).FirstOrDefault();  
            if (data != null)  
            {  
                _dbContext.Cars.Remove(data);  
                _dbContext.SaveChanges();  
            }  
            return RedirectToAction("cars");  
        }  
    }  
} 

Вот модель:

using System.ComponentModel.DataAnnotations;  
using System.ComponentModel.DataAnnotations.Schema;  

namespace Lab2Phase1.Models  
{  
    public class Car  
    {  
        [Key]
        public int Id { get; set; }  
        public string Model { get; set; }  
        public string TopSpeed { get; set; }  

        public string ImageName { get; set; }
    }  
}  

1 Ответ

0 голосов
/ 29 февраля 2020

<img src="~/Content/images/@Html.DisplayFor(modelItem => modelItem.ImageName)" style="height:200px;width:200px;"/>

должно быть

<img src="~/Content/images/@(item.ImageName)" style="height:200px;width:200px;"/>

Предполагая, что ImageName - это имя файла с расширением, доступным по этому пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...