Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Динамическое добавление полей и формирование JSON (https://javascript.ru/forum/dom-window/68690-dinamicheskoe-dobavlenie-polejj-i-formirovanie-json.html)

Scantraxx 03.05.2017 15:18

laimas,
у меня работала отправка формы, когда я делал так:

Html.EditorFor(model=>model.detail[0].details_name)
Html.EditorFor(model=>model.detail[0].details_value)


но Razor нельзя добавлять динамически

laimas 03.05.2017 15:21

Я не знаю ASP .NET на таком уровне, чтобы оказывать какую либо существенную помощь кому либо. :) И к JS это не имеет отношения, нужно было размещать тему в другом разделе, вполне возможно что кто-то и занимается им серьезно.

laimas 03.05.2017 15:24

Цитата:

Сообщение от Scantraxx
у меня работала отправка формы, когда я делал так

Попробуйте так именовать поля характеристик:

<input class="copy-input" type="text" name="details_name[]" />
<input class="copy-input" type="text" name="details_value[]" />

Scantraxx 03.05.2017 15:36

Цитата:

Сообщение от laimas (Сообщение 451523)
Попробуйте так именовать поля характеристик:

не помогло:( я вот пробую просто без добавления новых полей отправить форму, а все равно null. Спасибо за внимание, буду копаться

laimas 03.05.2017 15:45

Цитата:

Сообщение от Scantraxx
не помогло

Ожидаемо. На клиенте собственно фиолетово как поля дразнятся, в том же JS это просто набор элементов формы. А вот как получает их сервер, тут уже не все однозначно.

if (model.detail != null) {
foreach (var details in model.detail)

чем в данном случае является model.detail? Это должна быть коллекция элементов именно с именем details_name (при этом где details_value?).

Scantraxx 03.05.2017 15:56

laimas,
у меня есть общая модель для таблиц Товара, Характеристик и Изображения. model.detail это я так обращаюсь к модели details.
То есть мне на сервер приходит общая модель, содержащая в себе модель Товара(название, категория, бренд и т.д.), модель Характеристик(коллекция {название+значение}) и Изображение(хранится в двоичных данных). После того как эта модель пришла, я по очереди "вытягиваю" из нее эти три модели и добавляю в бд.

laimas 03.05.2017 15:59

И что возвращает модель? Проверить то это можно. Вы ведь пытаетесь обойти объект model.detail циклом чтобы получить его элементы. Так что вы получаете?

Scantraxx 03.05.2017 16:07

laimas,
да можно, я прикреплял в каком-то посте скрин. Там null. part приходит нормально, image я не загружаю, а вот detail не хочет и все =/

laimas 03.05.2017 16:17

Цитата:

Сообщение от Scantraxx
part приходит нормально

Я не о приходе говорю, а о объекте на клиенте и о коде отправки формы спрашивал, а не о об обработчике ее на сервере. Вы же об Ajax отправке речь вели, форма ваша асинхронно у вас отравляется?

Scantraxx 03.05.2017 16:21

laimas,
пока без Ajax
<script>
    var $myForm=$("#myForm");

    $(".plus").off("click").on("click",function(){
        $(".details").append('<div class="details-part"><input class="details_name" type="text" /><input class="details_value" type="text" /></div>')
});

    $("#save-form").off("click").on("click",function(){
        var detailList=[];
        $myForm.find(".details-part").each(function(){
            detailList.push({
                details_value:$(this).find(".details_value").val(),
                details_name:$(this).find(".details_name").val()
            })
        });
        $myForm.find('[name="details"]').val(JSON.stringify(detailList))
        $myForm.submit()
    });
</script>


Часовой пояс GMT +3, время: 04:22.