HTML данные таблицы в JSON и отправить его контроллер Mvc в список

0

У меня есть представление с таблицей HTML, где строки создаются динамически. Каков наилучший способ отправить данные таблицы контроллеру и обновить модель? В настоящее время я преобразовал таблицу в JSON, как показано ниже:

 {"0": ["Job Code","Hours","Rate","Expense"],"1": ["a1","b1","c1","d1"],"2": ["a2","b2","c2","d2"]}

Я попытался использовать метод десериализации newtonsoft JSON, но это не удалось.

Я думаю, что он не смог преобразовать этот формат JSON.

Есть ли какой-либо другой метод сериализации таблицы, который принят newtonsoft JSON?

Теги:
asp.net-mvc

1 ответ

1
Лучший ответ

{} В JSON сообщает де-сериализатору, что он собирается создать объект. Помня об этом, созданный вами JSON создал бы один объект - с каждым свойством, содержащим массив строк. Кажется, что вам нужен список объектов, а не этот.

Используете ли вы этот метод для де-сериализации?

JsonConvert.DeserializeObject<T>(json)

Вам необходимо указать тип де-сериализации. Таким образом, в этом случае это будет:

class JobDetails
{
    public string JobCode { get; set; }
    public double Hours { get; set; }
    public double Rate { get; set; }
    public double Expense { get; set; }
}

Чтобы де-сериализовать этот тип, ваш JSON.NET JsonConvert будет выглядеть так:

    [HttpPost]
    public ActionResult Testing(string json)
    {
        var list = JsonConvert.DeserializeObject<List<JobDetails>>(json)
        UPDATE_YOUR_MODEL_HERE(list);

        return WHAT_YOU_WANT_TO_RETURN_HERE;
    }

Ваш JSON будет выглядеть так:

[
    {
        "JobCode": "a1",
        "Hours": 37.5,
        "Rate": 10,
        "Expense": 375
    },
    {
        "JobCode": "a2",
        "Hours": 10,
        "Rate": 20,
        "Expense": 200
    },
    {
        "JobCode": "a3",
        "Hours": 37.5,
        "Rate": 20,
        "Expense": 750
    }
]

Это преобразует JSON в список объектов JobDetails.

Альтернативно, если вы хотите разрешить JSON для объектов в качестве параметра Action, это должно сделать трюк:

    [HttpPost]
    public ActionResult Testing(List<JobDetails> list)
    {
        UPDATE_YOUR_MODEL_HERE(list);

        return WHAT_YOU_WANT_TO_RETURN_HERE;
    }

Если у вас возникли проблемы с получением сериализованной таблицы для исправления JSON, попробуйте посмотреть этот подключаемый модуль jQuery: https://github.com/lightswitch05/table-to-json

Ещё вопросы

Сообщество Overcoder
Наверх
Меню