JSON Сериализация с MVC3 - PullRequest
       8

JSON Сериализация с MVC3

2 голосов
/ 08 декабря 2011

Как я могу сериализовать следующее как результат json? Объект возвращается к моему контроллеру как ноль.

public class CertRollupViewModel
{
    public IEnumerable<CertRollup> CertRollups { get; set; }
}

public class CertRollup
{
    public decimal TotalCpm { get; set; }
    public decimal TotalIO { get; set; }
}

// The json obj leaves the controller method "GetAlerts" ok but not sure how to validate if the object
//   is intact before it get's passed into the GetCertRollupView.
//   The GetCertRollupView is where the json object is null

// Some button click...
$.get('@Url.Action("GetCerts")',   **// STEP 1**
    function (data) {
     $("#rollupgridview").load('@Url.Action("GetCertRollUpView")',  **// STEP 3**
        data);
...

public ActionResult GetCerts()  **// STEP 2**
{
    ...
    return Json(CertRollupViewModelObject, JsonRequestBehavior.AllowGet);
}

public ActionResult GetCertRollUpView(CertRollupViewModel certRollupViewModel)  **// STEP 4**
{
  // certRollupViewModel IS NULL!!!
 return PartialView("_CertRollUp", certRollupViewModel);
}

ПРИМЕЧАНИЕ. Структура передается правильно, однако значения CertRollup равны 0.

Немедленное окно для Visual Studio:

?certRollupViewModel.CertRollups 
     Count = 1
    [0]: {Models.CertRollup} ?CertRollupViewModel.CertRollups.First() {Models.CertRollup}
    TotalCpm: 0

Ответы [ 3 ]

1 голос
/ 08 декабря 2011

Попробуйте:

function loadRollupGridView () {
    $.ajax({
        url: '@Url.Action("GetCerts")',
        type: 'GET',
        success: function(certRollupViewModel) { 
            $('#rollupgridview')
                .load('@Url.Action("GetCertRollupView"), certRollupViewModel)');
        },               
        error: function () {
            $('#rollupgridview')
                .html('<div class="error">Something went wrong...</div>');
        }
    });
}

Я думаю, что основная проблема в том, что вы передаете переменную data в контроллер, а не certRollupViewModel, как ожидалось.

ЭтоВот как должен выглядеть ваш объект JSON при передаче в контроллер:

{"certRollupViewModel": 
  {"CertRollups":
    [
      {"TotalCpm": "25.35", "TotalIO": "380.23"}, 
      {"TotalCpm": "25.35", "TotalIO": "380.23"},
      {"TotalCpm": "25.35", "TotalIO": "380.23"}
    ]
  }
}
0 голосов
/ 08 декабря 2011

Может быть, я пропустил, где вы сериализуете свои данные для отправки?Проверьте, как формализуется форма

Сериализация данных формы не работает в приложении asp.net mvc

В приведенном выше коде я не вижу, как вы указываете данныеотправить на контроллер

0 голосов
/ 08 декабря 2011
JsonResult ActionRoutine()
{
   ...
   return Json( data );
}

ОБНОВЛЕНИЕ: Я думаю, что вы собираетесь вернуть JSON в метод действия. Я добился успеха, создав аргументы с соответствующими аргументами для параметров JSON в качестве сигнатуры метода.

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