2013-09-18 2 views
0

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

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

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

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

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

ответ

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

Смежные вопросы