Мне нужно просто отобразить несколько изображений, которые я вставляю - PullRequest
0 голосов
/ 01 ноября 2018

Мне нужно просто отобразить несколько изображений, которые я вставляю, это сохранит волю в пути, но когда он показал, это действительно появляется. Я не знаю, где моя проблема, но это мой код, пожалуйста, ребята, помогите мне?

Мой контроллер

public async Task<ActionResult> Create(Inbox model, IEnumerable<HttpPostedFileBase> files)
{
    var currentUser = await manager.FindByIdAsync(User.Identity.GetUserId());
    if (ModelState.IsValid)
    {
        model.User = currentUser;
        foreach (var file in files)
        {
            if (file != null && file.ContentLength > 0)
            {
                var fileName = Path.GetFileName(file.FileName);
                var path = Path.Combine(Server.MapPath("~/FilesAPP"), fileName);
                file.SaveAs(path);
                path = Url.Content(Path.Combine("~/FilesAPP", fileName));
            }
        }
        db.Inboxs.Add(model);
        db.SaveChanges();
        string url = Url.Action("List");
        return Json(new { success = true, url = url });
    }
    return View(model);
}

Моя модель

public string Files { get; set; }

И мой взгляд

<img width="200" height="150" src="@Url.Content(Model.Files))" />

Как я могу отображать мои изображения, ребята?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

сначала создайте список для файлов

    public async Task<ActionResult> Create(Inbox model, IEnumerable<HttpPostedFileBase> files)
        {
List<Inbox>lst=new List<Inbox>();
            var currentUser = await manager.FindByIdAsync(User.Identity.GetUserId());
            if (ModelState.IsValid)
            {
                model.User = currentUser;
                foreach (var file in files)
                {
                    if (file != null && file.ContentLength > 0)
                    {
                        var fileName = Path.GetFileName(file.FileName);
                        var path = Path.Combine(Server.MapPath("~/FilesAPP"), fileName);
                        file.SaveAs(path);
                        path = Url.Content(Path.Combine("~/FilesAPP", fileName));
lst.add(new Inbox{Files=path});
//you files added here
                    }
                }
                db.Inboxs.Add(model);
                db.SaveChanges();
                string url = Url.Action("List");
                return Json(new { success = true, url = url });
            }
            return View(model);
        }

после вашего взгляда

@model List<Inbox>

@foreach (var item in Model.Files)
{
    <img src="@item.FilePath" />
}
0 голосов
/ 01 ноября 2018

Я вижу, что вы сохраняете свои файлы в контроллере в цикле, но вы не обновляете свою модель путями к файлам. Обновите вашу модель путями к файлам в контроллере и передайте модель в представление, как вы делаете. Затем, по вашему мнению, вы также должны выполнить цикл, выполнить итерации по изображениям и для каждого из них отобразить тег img с источником в качестве пути к файлу, сохраненного в контроллере.

Предполагая, что вы используете синтаксис Razor ASP.NET, просто сделайте что-то подобное в своем представлении, как в контроллере. но сначала обязательно прикрепите файлы к вашей модели:

@foreach (var item in Model.Files)
{
    <img src="@item.FilePath" />
}

Вот еще один пост с примером циклов в Razor, удачи!

MVC Razor @ foreach

...