Member 7969814 Ответов: 1

Как заполнить массив js в список классов в MVC 5 .NET


Привет,
Я хочу заполнить список c# с помощью массива JavaScript в mvc razor .net

вот мой код

function SendData() {
        document.getElementById('info').innerHTML = "";
        var myTab = document.getElementById('TB1');
        var Details = [[]];
        // LOOP THROUGH EACH ROW OF THE TABLE AFTER HEADER.

        for (i = 1; i < myTab.rows.length; i++) {

            Details.push([myTab.rows[i].cells[1].children[0].value, myTab.rows[i].cells[2].children[0].value, myTab.rows[i].cells[3].children[0].value]);
            
             @Model.DTList = Details;
        };


эта линия не работает @
@Model.DTList = Details;


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

function SendData() {
        document.getElementById('info').innerHTML = "";
        var myTab = document.getElementById('TB1');
        var Details = [[]];
        // LOOP THROUGH EACH ROW OF THE TABLE AFTER HEADER.

        for (i = 1; i < myTab.rows.length; i++) {

            Details.push([myTab.rows[i].cells[1].children[0].value, myTab.rows[i].cells[2].children[0].value, myTab.rows[i].cells[3].children[0].value]);
            
             @Model.DTList = Details;
        };

F-ES Sitecore

Вы не можете этого сделать, потому что ваш серверный код запускается первым (все в блоке@) для генерации html (включая вашу функцию SendData), которая отправляется в браузер для выполнения, поэтому когда "@Model.DTList = " line is running on your server there is no such thing as "Details". Если вы хотите отправить данные на сервер, вы должны сделать это в виде обратной передачи формы или с помощью ajax. Читая между строк, Если вы используете DTList позже в своем представлении, вам, возможно, придется перестроить то, как вы делаете вещи.

Member 7969814

в методе ajax я могу отправить несколько массивов деталей
моя проблема в том, что я хочу отправить более одного списка details1, details2, details3,
но в "Аяксе" у меня совместить все в одном (данные в формате JSON.преобразовать в строки(DetailsAll),)
$.Аякс({
тип: "почта",
//традиционный: правда,
url: "/Emp/MasterDetails",
сведения: в формате JSON.преобразовать в строки(подробности),
contentType: "application/json; charset=utf-8",
тип данных: "json",
традиционный: правда,
успех: функция (данные) {
alert(data.massge + " запись(ы) вставлена.");
}
});
если у вас есть время, дайте мне пример ссылки на метод обратной связи.

1 Ответов

Рейтинг:
0

Richard Deeming

Это не так работает. Код C# и Razor выполняется на сервере и генерирует ответ, который отправляется обратно клиенту. (В этом случае ответом является HTML-страница, содержащая некоторый Javascript.) Затем клиент выполняет Javascript в ответ на какое-то событие на клиенте, и к этому времени ваш Model уже давно нет.

Если вы хотите передать данные из Javascript обратно на сервер, вам нужно сделать еще один запрос. Вы можете либо сделать запрос AJAX, либо отправить <form> Затем сервер может обработать данные, отправленные с этим запросом, и вернуть новый ответ.

Ajax - руководства для разработчиков | MDN[^]