Не получить данные из вызова Ajax к контроллеру как массив данных в MVC c # - PullRequest
0 голосов
/ 09 июня 2019

## AJAX CALL на странице cshtml ##

function ValidateData() {
            var editedRows = [];
            $("#eventsTable tbody tr").each(function () {
                editedRows.push({
                    PK_WS_Event: $(this).find("td:eq(1)")[0].innerText,
                    Act_Id: $(this).find("td:eq(2)")[0].innerText,
                    WeeklyStatus: $(this).find("td:eq(3) option:selected").text()
               == "--Select--" ? "" : $(this).find("td:eq(3) 
          option:selected").text(),
                    WeeklyStatusSubType: $(this).find("td:eq(4)  
         option:selected").text() == "--Select--" ? "" : $(this).
         find("td:eq(4) option:selected").text(),
                    AccountName: $(this).find("td:eq(5)")[0].innerText,
                    AccountNumber: $(this).find("td:eq(6)")[0].innerText,
                    WeeklyStatusDesc: $(this).find("td:eq(7)")
             [0].textContent.trim(),
                });
            });

            $.ajax({
                type: 'post',
                url: "/WeeklyStatus/IndexSubmit",
                data: JSON.stringify({ editedRows: editedRows }),
                contentType: 'application/json',
                dataType: "html",
                success: function (response) { 
                },
                error: function (xhr, status, error) {
                    alert('fail');
                }
            });
        }



    ## Server Code Controller and ##
    ----------
       [HttpPost]
            public IActionResult IndexSubmit(IList<WeeklyStatusEvents> 
          editedRows)
            {
                return null;
            }

Мой ViewModel, как показано ниже ..

public class ReportViewModel
{
    public int SelectedStatusId { get; set; }
    public int SelectedSubTypeId { get; set; }


    public List<WeeklyStatusEvents> statusEvents { get; set; }

}

И модель WeeklyStatusEvents, как показано ниже

public class WeeklyStatusEvents
{

    public string PK_WS_Event { get; set; }
    public string Act_Id { get; set; }
    //public bool INDExcludeFromRpt { get; set; }
    public string WeeklyStatus { get; set; }
    public string WeeklyStatusSubType { get; set; }
    public string AccountName { get; set; }
    public string AccountNumber { get; set; }
    public string WeeklyStatusDesc { get; set; }


}

Итак, я получаю счет 0 ...

Я создал класс со всеми этими свойствами.и То же имя свойства, которое я использовал и в вызове ajax.

Даже я не получаю данные.Можете ли вы предоставить решение, что я пропустил, чтобы получить данные.

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Добавьте [FromBody] перед своим списком и попробуйте снова

[HttpPost]
public ActionResult IndexSubmit([FromBody] List<WeeklyStatusEvents> obj)
{
   Vreturn null;
}
0 голосов
/ 09 июня 2019

Заменить

data: JSON.stringify({ editedRows: editedRows }),

на

data: JSON.stringify(editedRows),

Разница в том, что вы хотите отправить массив объектов вместо объекта, который содержит массив.

Чтобы увидеть различия между этими двумя, я рекомендую вам проверить, что возвращают следующие строки:

console.log(JSON.stringify(editedRows) 
console.log(JSON.stringify({ editedRows: editedRows })

и добавить [FromBody] перед вашим параметром в вашем действии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...