Загрузить несколько картинок ASP.NET MVC 5

shadow7256
Уже с Приветом
Posts: 10590
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Загрузить несколько картинок ASP.NET MVC 5

Post by shadow7256 »

Уважаемые,

Нужно сделать такую вещь. Есть файл, в котором хранятся некие картинки (BMP), их количество заранее неизвестно, может быть одна, может быть две или больше картинок. Когда открывается страница, то эти картинки все показываются пользователю.

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

Как это сделать?
Page.png
You do not have the required permissions to view the files attached to this post.
User avatar
KVA
Уже с Приветом
Posts: 5382
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Re: Загрузить несколько картинок ASP.NET MVC 5

Post by KVA »

А в чем конкретно загвоздка?
User avatar
OtherSide
Уже с Приветом
Posts: 17361
Joined: 01 Mar 2008 15:14

Re: Загрузить несколько картинок ASP.NET MVC 5

Post by OtherSide »

Звучит как заявка на сайте фрилансеров ) Вы исполнителей ищите или что?
shadow7256
Уже с Приветом
Posts: 10590
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Загрузить несколько картинок ASP.NET MVC 5

Post by shadow7256 »

KVA wrote: 18 Dec 2018 03:43 А в чем конкретно загвоздка?
Загвоздка как правильно передать эти картинки через модель обратно в контроллер.

Как обновлять изображения на странице я уже нашел, через onchange event в <input type="file" onchange="HandleChange....>

А вот как их в модель правильно засунуть?
User avatar
KVA
Уже с Приветом
Posts: 5382
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Re: Загрузить несколько картинок ASP.NET MVC 5

Post by KVA »

shadow7256
Уже с Приветом
Posts: 10590
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Загрузить несколько картинок ASP.NET MVC 5

Post by shadow7256 »

KVA wrote: 18 Dec 2018 18:37 Google -> second link from top.

https://www.mikesdotnetting.com/article ... sp-net-mvc
ну это я видел. Дело в том, что помимо изображений на странице находятся другие данные. которые я передаю в модели. Картинки это только часть. То есть сейчас модель примерно так выглядит:

Code: Select all

public class TransactionEditModel
    {
        public TransactionEditModel()
        {
            FieldGroups = new List<EditFieldGroupModel>();
            Photos = new List<PhotographImage>();
        }

        public int TransactionId { get; set; }
        public List<EditFieldGroupModel> FieldGroups { get; set; }
        public List<PhotographImage> Photos { get; set; }

        public string HeightFeetSelectedValue { get; set; }
        public string HeightInchesSelectedValue { get; set; }
        public bool MaskSocialSecurity { get; set; }
        public string Tcn { get; set; }
        public string PagingInfo { get; set; }
    }
Если туда тупо добавить IEnumerable<HttpPostedFileBase> files то эта переменная при посте обратно на сервер никаких файлов не содержит. В этом и трудность.. может я что то не так делаю...
User avatar
KVA
Уже с Приветом
Posts: 5382
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Re: Загрузить несколько картинок ASP.NET MVC 5

Post by KVA »

How about this?

public ActionResult Multiple(IEnumerable<HttpPostedFileBase> files, TransactionEditModel model)

And then copy files to your model.
shadow7256
Уже с Приветом
Posts: 10590
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Загрузить несколько картинок ASP.NET MVC 5

Post by shadow7256 »

Разобрался вроде.. нужно чтобы <input type="file> контролы имели такой же name аттрибут как и имя свойства в модели. То есть в моем случае надо всем <input type="file" прибавить name="files"


тогда model binder все присвоит правильно..

то есть модель теперь выглядит как

Code: Select all

 public class TransactionEditModel
    {
        public TransactionEditModel()
        {
            FieldGroups = new List<EditFieldGroupModel>();
            Photos = new List<PhotographImage>();
            UploadedPhotos = new List<HttpPostedFileBase>();
        }

        public int TransactionId { get; set; }
        public List<EditFieldGroupModel> FieldGroups { get; set; }
        public List<PhotographImage> Photos { get; set; }

        [b]public IEnumerable<HttpPostedFileBase> UploadedPhotos { get; set; }[/b]

        public string HeightFeetSelectedValue { get; set; }
        public string HeightInchesSelectedValue { get; set; }
        public bool MaskSocialSecurity { get; set; }
        public string Tcn { get; set; }
        public string PagingInfo { get; set; }
    }
и на странице несколько контролов

Code: Select all

<input type="file" name="UploadedPhotos" />

Return to “Вопросы и новости IT”