Member 12955507 Ответов: 1

Как привязать имя изображения к hiddenfield перед отправкой формы ?


Я работаю в MVC5, после сохранения загруженного изображения в папке проекта Я хочу привязать имя изображения к объекту модели с помощью скрытого значения поля,

Смотреть,

@Html.HiddenFor(m => m.AdImageFileName, new { @id = "hdAdImageFileName" })


Что я уже пробовал:

Используя jQuery ниже кода, я сохраняю изображение и возвращаю и привязываю имя изображения к скрытому полю в качестве значения.

Advertisement = {
   Addform: function (e) {
    this.SaveAdvtImages();
                   $.ajax({
                       url: "/UserRegister/Advertisement",
                       type: "POST",
                       data: $('form').serializeArray(),
                       success: function (result) {
                           $('.loading').hide();
                           $(".modal-content").height(225);
                           $('#alertMsgModalContent').html(result);
                           $('#alertMsgModal').modal(options);
                           $('#alertMsgModal').modal('show');
                       },
                       error: function (result) {

                       }
                   });
                   },
   SaveAdvtImages: function () {

       var formData = new FormData($('#frmAdvertisement')[0]);
       $('.loading').show();
       $.ajax({
           url: '../UserRegister/SaveAdvImages/',
           type: 'POST',
           data: formData, //{ $formData, pageVM: hidJson },

           contentType: false,
           processData: false,

           success: function (res) {
               $('#hdAdImageFileName').val(res.AdvImage);
           },
           error: function (data) {

           }
       });
   }
   }


Но прежде чем представить '
$('form').serializeArray()
- Я должен установить
m => m.AdImageFileName
модельный объект. Сейчас,
 [HttpPost]
        public ActionResult Advertisement(AdvertisementVM advertisementVM
{

}


то
advertisementVM.AdImageFileName
передает null, а не устанавливает имя изображения.

Пожалуйста, помогите мне, как я могу это сделать ?

1 Ответов

Рейтинг:
0

Kornfeld Eliyahu Peter

$('#id').val(value-to-set); // just before your ajax call


Member 12955507

Да, я устанавливаю значение '$('#hdAdImageFileName').вал(рез.AdvImage); и это происходит после того, как выполним это.Функция SaveAdvtImages ();'. Но только "advertisementVM".AdImageFileName ' передает null

Kornfeld Eliyahu Peter

Может быть, ваш первый вызов ajax никогда не попадет в "успех"? Попробуйте его отладить...

Member 12955507

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

Kornfeld Eliyahu Peter

Назначить из AJAX-вызов, как раз перед этим.SaveAdvtImages();

Member 12955507

Извините меня! Я не могу понять, Вы имеете в виду, что я должен переместить '$('#hdAdImageFileName'). val(res. AdvImage); ' вне ' этого.SaveAdvtImages (); ' функция ?

Kornfeld Eliyahu Peter

Да.

Member 12955507

теперь ошибка: "Uncaught ReferenceError: res не определен"

Kornfeld Eliyahu Peter

Проверить это:
Метод. serializeArray () использует стандартные правила W3C для успешных элементов управления, чтобы определить, какие элементы он должен включать; в частности, элемент не может быть отключен и должен содержать атрибут name. Значение кнопки отправки не сериализуется, так как форма не была отправлена с помощью кнопки. Данные из элементов выбора файла не сериализуются. Элементы, не содержащие атрибута value, представляются пустым строковым значением.

Member 12955507

Вот, что я могу сделать? пожалуйста

Kornfeld Eliyahu Peter

- Прошу прощения? Вы видели мой последний комментарий?

Member 12955507

Да ... да, но я не могу найти решение...

Kornfeld Eliyahu Peter

Есть ли у вас атрибут имени в вашем скрытом поле?

Member 12955507

@формат HTML.HiddenFor(м =&ГТ; м. AdImageFileName, новые { @идентификатор = "hdAdImageFileName" }) это hiddenfield, поэтому имя attr является 'AdImageFileName', не так ли?

Kornfeld Eliyahu Peter

Должно быть... Ты всегда лучше проверяй... Возможно ли, что тип поля в вашей модели не соответствует значению, которое вы пытаетесь ввести?

Member 12955507

хм... Я проверил значение hd после отправки формы. например, $('#AdImageFileName'). val()
"c6bc97f7-003a-4981-8b0c-2348efadcb9b.jpg"
Тогда тип данных объектная модель 'AdImageFileName" это " общественные строку AdImageFileName { получить; набор; }'

Kornfeld Eliyahu Peter

Вы проверили $('form'). serializeArray (); вне вызова ajax?
И $('#AdImageFileName').функция val() или $('#hdAdImageFileName').Валь() (как в коде)?

Member 12955507

Да, после вызова функции this.SaveAdvtImages(); я сделал предупреждение в $('#hdAdImageFileName').функция val() или $('#AdImageFileName').функция val() то она пустая

Kornfeld Eliyahu Peter

И вы уверены, что попали в ветку успеха в вызове ajax? Возможно, вам следует добавить предупреждение в ветку ошибок...