Raj kumar.C Ответов: 1

Результат действия Serilzing MVC


Я использую MVC2. 0 и telerik control для привязки данных пользовательского интерфейса.
Мои действия в контроллер
public ActionResult SearchFilter(RequestModel filterModel)
{
var retList = новый список<iadjustment>();
var retList = (List< iadjustment>) GetAllSearchRecords (фильтр);
return View(new GridModel(retList));
}

в приведенной выше модели сетки кода ожидающий список<t>. это прекрасно работает. Когда размер данных большой, попадая ниже ошибки.
Система.InvalidOperationException: ошибка во время сериализации или десериализации с помощью JSON JavaScriptSerializer. Длина строки превышает значение, установленное в свойстве maxJsonLength


Кто-нибудь может мне помочь, как это решить?

Что я уже пробовал:

Я пробовал с сериализатором
var serializer = новый JavaScriptSerializer();
сериализатор.MaxJsonLength = Int32 Значение.Максвеллову;
return View(new GridModel (serializer.Сериализация (retList)));

Но сеточная модель ожидает список & lt; t>.

1 Ответов

Рейтинг:
2

Dave Kreskowiak

Ваш вопрос немного сбивает с толку. Какой код вы действительно используете, а какой терпит неудачу с большим набором данных?

Отправка списка< t> В представление ничего не сериализует в JSON. Это просто объект, передаваемый движку Razor view engine при выполнении кода Razor для генерации HTML-кода для возвращаемой страницы.

Вы бы использовали JSON для возврата объекта обратно клиенту, как правило, для запроса данных, а не для запроса страницы.

Я скажу вам, что допустимая длина возвращаемой строки JSON по умолчанию составляет 102 400 символов. Вы можете изменить это несколькими способами. Самый простой (и глобальный) способ сделать это для всего вашего приложения - добавить параметр в файл web.config:

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="2147483644" />
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration>

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

Теперь, если вы все еще получаете это сообщение об ошибке, это потому, что ваша сгенерированная строка JSON больше, чем MaxJsonLength. В вашем примере это будет строка JSON размером более 2 гигабайт. Отправка такого количества данных обратно клиенту-ужасная идея.


Raj kumar.C

когда я отправляю сериализованный объект json, данные не являются обязательными. Beacuase он ожидает объект класса, а не строку Json.

Dave Kreskowiak

Да, потому что движок Razor не использует JSON. Он использует реальный объект.

Серьезно, возьмите книгу по MVC и поработайте над ней. Это очень простая концепция MVC.