Как я предотвращаю сериализацию JSON в ASP.NET MVC?

главная причина для предотвращения выдачи исключения состоит в том, что существует много издержек, связанных с выдачей исключения.

Одна вещь статья ниже состояний - то, что исключение для исключительные условия и ошибки.

А неправильное имя пользователя является не обязательно ошибкой в программе, но пользовательской ошибкой...

Вот достойная начальная точка для исключений в.NET: http://msdn.microsoft.com/en-us/library/ms229030 (По сравнению с 80) .aspx

17
задан JMP 12 August 2009 в 22:37
поделиться

4 ответа

[ScriptIgnore] должен работать на вас.

28
ответ дан 30 November 2019 в 10:59
поделиться

Обычно я обнаружил, что для сложных объектов лучше всего сериализовать, создав временный объект «промежуточный»:

Например, для отзывов я делаю следующее. На самом деле я делаю это в коде для моей страницы модели ASPX.

Это создает красивый объект JSON. Вы заметите, что я могу даже реорганизовать свою модель, и страница все равно будет работать. Это просто еще один уровень абстракции между моделью данных и страницей. Я не думаю, что мой контроллер должен знать о JSON как можно больше, но ASPX 'codebehind', безусловно, может.

/// <summary>
/// Get JSON for testimonials
/// </summary>
public string TestimonialsJSON
{
    get
    {
        return Model.Testimonials.Select(
            x => new
            {
                testimonial = x.TestimonialText,
                name = x.name
            }
            ).ToJSON();
    }
}

В моем ASPX я просто делаю это в блоке:

var testimonials = <%= TestimonialsJSON %>;

// oh and ToJSON() is an extension method
public static class ObjectExtensions
{
    public static string ToJSON(this Object obj)
    {
        return new JavaScriptSerializer().Serialize(obj);
    }
}

Я готов к негативной реакции на это предложение ... давай ...

Я не обращаюсь к данным, я просто переформатирую модель для представления. Это логика «модели представления», а не логика «модели контроллера».

13
ответ дан 30 November 2019 в 10:59
поделиться

Я бы посоветовал использовать JSON.NET . Он позволяет сериализовать циклические ссылки и предоставляет гораздо больше возможностей сериализации.

2
ответ дан 30 November 2019 в 10:59
поделиться

Что сказал Саймон. Добавьте небольшое действие AutoMapper , чтобы контролировать вес кода.

2
ответ дан 30 November 2019 в 10:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: