manish-gusain8909 Ответов: 1

Как передать массив javascript с formdata контроллеру в MVC с помощью MVC


у меня есть форма с несколькими полями и таблицей.

теперь я хочу передать данные формы contoller для сохранения в базе данных,
я использую ajax, чтобы сделать то же самое.

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

Просмотр кода

function sumbit() {

        var empFirstName    = document.getElementById('txtFirstName').value;
        var empLastName     = document.getElementById('txtLastName').value;
        var empEmail        = document.getElementById('txtEmail').value;
        var empNumber       = document.getElementById('txtNumber').value;
        var empAddLine1     = document.getElementById('txtAddLine1').value;
        var empAddLine2     = document.getElementById('txtAddLine2').value;


        var game = new Array();
        $('#empTable tr').each(function (row, tr) {
            game[row] = {
                "Game": $(tr).find('td').eq(1).text(),
                "Player Category": $(tr).find('td').eq(2).text(),
                "Player Sub Category": $(tr).find('td').eq(3).text(),
                "Player Achievement": $(tr).find('td').eq(4).text()
            }
        });  
        
        
        var formData = new FormData();
        formData.append("FirstName", empFirstName);
        formData.append("LastName", empLastName);
        formData.append("Email", empEmail);
        formData.append("Number", empNumber);
        formData.append("AddLine1", empAddLine1);
        formData.append("AddLine2", empAddLine2);
        formData.append("Game", JSON.stringify(game));
        
       
        
        $.ajax({

            url: "/Home/Submit",
            type: "POST",
            contentType: false,
            processData: false,
            dataType: "JSON",
           data: formData,         
            success: function (r) {
                alert(r + " record(s) inserted.");
            }
        });
    }


контроллер

[HttpPost]
        public ActionResult Submit(FormCollection formCode)
        {
            string i,j;
            string FirstName = formCode["FirstName"].ToString();
            string LastName = formCode["LastName"].ToString();
            string Email = formCode["Email"].ToString();
            string Number = formCode["Number"].ToString();
            string AddLine1 = formCode["AddLine1"].ToString();
            string empId = formCode["AddLine2"].ToString();
            string Game= formCode["Game"].ToString();
            
            return View();
            
        }


и я тоже попробовал ниже код

Submit(string FirstName,string LastName,string Email,string Number,string AddLine1,string AddLine2,string[] Game)


данные поступают по всему полю, но проблема в том, что значение в игре одно

[{"Game":"","Player Category":"","Player Sub Category":"","Player Achievement":""},{"Game":"qq","Player Category":"aa","Player Sub Category":"cc","Player Achievement":"zz"},{"Game":"qq","Player Category":"aa","Player Sub Category":"cc","Player Achievement":"zz"}]



Я должен сохранить данные таблицы в строке базы данных мудро, так что это трудно обрабатывать.

я хочу передать как массив , так что я могу легко сохранить.

1 Ответов

Рейтинг:
1

MadMyche

Возможно, вы захотите изучить использование массива.push() метод
Array.prototype.push() - JavaScript | MDN[^]

var game = new Array();
$('#empTable tr').each(function (row, tr) {
 game.push({
    "Game": $(tr).find('td').eq(1).text(),
    "Player Category": $(tr).find('td').eq(2).text(),
    "Player Sub Category": $(tr).find('td').eq(3).text(),
    "Player Achievement": $(tr).find('td').eq(4).text()
  });
}


manish-gusain8909

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

MadMyche

И Толкать() метод будет использоваться для добавления элемента в существующий массив

manish-gusain8909

значение приходит в массив но в контроллере оно приходит как строка

MadMyche

Значение приходит в виде строки, как вы сказали, с помощью JSON.stringify()
https://www.w3schools.com/js/js_json_stringify.asp

Вам нужно будет добавить код на контроллере, чтобы deserialize значение на сервере.

У Newtonsoft есть JSON.Сеть, чтобы помочь вам в этом
https://www.newtonsoft.com/json/help/html/Overload_Newtonsoft_Json_JsonConvert_DeserializeObject.htm