Получать данные json в контроллере ASP.NET MVC 5 - PullRequest
0 голосов
/ 01 сентября 2018

Проверьте мой код, показанный ниже. Я публикую некоторые JSON в методе контроллера. И я хочу получить значения в классе модели C # с именем MenuItems; но проблема в том, что я могу отправить данные на мой контроллер, но все мои «MenuItems» возвращают ноль. Данные не назначаются правильно. Как я могу это исправить?

AJAX:

var obj = '[{ "text": "wewer", "target": "_self", "children": [{ "text": "wer", "target": "_top" }] }]';


$.ajax({
        type: "POST",
        url: "/Custom/SaveMenu",
        data: JSON.stringify(obj),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) { alert(data); },
        failure: function (errMsg) {
            alert(errMsg);
        }
    });

Модель:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace DemoWeb.ViewModels
{
    public class MenuItems
    {
        public string text { get; set; }
        public string target { get; set; }
        public List<Child> children { get; set; }
    }

    public class Child
    {
        public string text { get; set; }
        public string target { get; set; }
    }
}

Контроллер:

[HttpPost]
public JsonResult SaveMenu(MenuItems menuItems)
{
    //'menuItems' this returns null for all properties

    //return Json("pokay");
}

1 Ответ

0 голосов
/ 01 сентября 2018

Вы должны удалить [ и ] в первом и последнем из obj.

Итак obj изменено с:

var obj = '[{ "text": "wewer", "target": "_self", "children": [{ "text": "wer", "target": "_top" }] }]';

К этому:

var obj = '{ "text": "wewer", "target": "_self", "children": [{ "text": "wer", "target": "_top" }] }';

И применить data: obj, а удалить data: JSON.stringify(obj),

Полный код:

var obj = '{ "text": "wewer", "target": "_self", "children": [{ "text": "wer", "target": "_top" }] }';


$.ajax({
        type: "POST",
        url: "/Custom/SaveMenu",
        data: obj,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) { alert(data); },
        failure: function (errMsg) {
            alert(errMsg);
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...