Отправьте Dynami c Table как модель обратно в контроллер - PullRequest
0 голосов
/ 30 мая 2020

Я хотел бы отправить динамическую c таблицу обратно в контроллер, используя его модель. Следующая ситуация. В представлении я создаю таблицу с javascript, которая позволяет пользователям вставлять разные значения. Эти значения выбираются из предопределенных комбинированных списков:

$(document).ready(function () {
    $('#btn_insert').on('click', function () 
            var table=document.getElementById("table_computerimport");
            var table_len=(table.rows.length)-1;
            var row = table.insertRow(table_len).outerHTML="<tr id='row"+table_len+"'><td id='computername_row"+table_len+"'>"+computername+"</td><td id='uuid_row"+table_len+"'>"+"HERE UUID"+"</td><td id='collection_row"+table_len+"'>"+" HERE Collection Name"+"</td><td><input type='button' value='Delete' class='delete' onclick='delete_row("+table_len+")'></td></tr>";
    });

Это работает нормально, так что, по крайней мере, таблица создается с n записями.

<div>
    <button type="button" id="btn_insert" class="btn btn-primary">Insert</button>

    <div >
        <table class="table" id="table_computerimport">
            <thead>
                <tr>
                    <th>Hostname</th>
                    <th>MacAddress</th>
                    <th>GUID</th>
                </tr>
            </thead>
            <tr>

            </tr>
        </table>

    </div>

 </div>

Эти записи я хотел бы передать обратно контроллеру, используя его модель:

public IEnumerable<ComputerImportModel> TableComputerImport {get; set;}
@model ViewModels.ComputerImportViewModel

Так что я не хочу l oop хотя список объектов и опубликовать sh их в представлении, я хотел бы создать n записей в одном представлении сразу и передать их обратно контроллеру с помощью модели TableComputerImport. Я думаю, что в Javascript я должен сказать что-то вроде этого: input asp -for = "ComputerImport.hostname"


Update, хорошо, я думаю, что "решил" это. Что я сделал, так это то, что я создал массив с javascript из таблицы и передал его ajax контроллеру. Было важно, чтобы массив имел атрибуты имени, как и класс, чтобы я мог использовать этот объект в конструкторе как четко определенный объект.

1 Ответ

0 голосов
/ 04 июня 2020

Как я уже упоминал, мне пришлось использовать массив, который я отправляю AJAX контроллеру. Из-за одинаковых названий в таблице и в модели все идет своим чередом:

var singlecomputerimport = [];
        var headers = [];
        $('#table_computerimport th').each(function(index, item) {
            headers[index] = $(item).html();
        });
        $('#table_computerimport tr').has('td').each(function() {
            var arrayItem = {};
            $('td', $(this)).each(function(index, item) {
                if(headers[index] !== undefined){
                    //console.log($(item));
                    //arrayItem[headers[index].toLowerCase()] = $(item).html();
                    arrayItem[headers[index].toLowerCase()] = $(item).attr('value');
                }
            });
            singlecomputerimport.push(arrayItem);
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...