Как возвратить JSON из фильтра HandleError?

См. также:

для Microsoft Visual C:

http://msdn.microsoft.com/en-us/library/2e70t5y1%28v=vs. 80% 29.aspx

и GCC утверждают совместимость с компилятором Microsoft .:

http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking -Pragmas.html

В дополнение к предыдущим ответам, обратите внимание, что независимо от упаковки в C ++ нет гарантий-распоряжений-членов. Компиляторы могут (и, конечно же, делать) добавлять в структуру элементов виртуальной таблицы и базовых структур. Даже существование виртуальной таблицы не обеспечивается стандартом (реализация виртуального механизма не указана), и поэтому можно сделать вывод, что такая гарантия просто невозможна.

Я вполне уверен, что порядок членов является гарантировано в C, но я не стал бы рассчитывать на это, когда писал кросс-платформенную или кросс-компиляторную программу.

11
задан Luke Smith 21 September 2008 в 00:32
поделиться

2 ответа

Смотрите на реализацию MVC HandleErrorAttribute. Это возвращает ViewResult. Вы могли записать свою собственную версию (HandleJsonErrorAttribute), который возвращает JsonResult.

10
ответ дан 3 December 2019 в 06:49
поделиться

Возможно, Вы могли создать свой собственный Атрибут и сделать, чтобы конструктор оценил, который берет перечисление значений View или Json. Ниже то, что я использую, чтобы пользовательский Атрибут полномочий продемонстрировал то, что я имею в виду. Таким образом, когда сбои аутентификации на json запрашивают это, отвечает json ошибкой и тем же с тем, если он возвращает Представление.

   public enum ActionResultTypes
   {
       View,
       Json
   }

    public sealed class AuthorizationRequiredAttribute : ActionFilterAttribute, IAuthorizationFilter
    {
        public ActionResultTypes ActionResultType { get; set; }

        public AuthorizationRequiredAttribute(ActionResultTypes actionResultType)
        {
            this.ActionResultType = ActionResultType;
        }
    }

    //And used like
    [AuthorizationRequired(ActionResultTypes.View)]
    public ActionResult About()
    {
    }
1
ответ дан 3 December 2019 в 06:49
поделиться
Другие вопросы по тегам:

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