Подтвердить что ты не робот

"System.Dynamic.DynamicObject" не содержит определения для "PropertyName"

Я столкнулся со следующей проблемой:

Я пытаюсь запустить сайт .NET MVC, чтобы использовать ViewBag для передачи некоторых данных в Мой просмотр. Вот метод, в котором я устанавливаю VeiwBag.

[HttpGet]
[AllowAnonymous]
public ActionResult Start()
{
    ViewBag.BanReason = null;
    int userId;

    //Request with UserId, display ban reason if necessary
    if (Request.Params["UserId"] != null && int.TryParse(Request.Params["UserId"], out userId))
    {
        ViewBag.BanReason = CheckIfUserBanned(userId);
    }

    ViewBag.Users = MvcApplication.Users;

    return View();
}

Когда я присваиваю значение ViewBag (например ViewBag.BanReason = null;), у меня есть RuntimeBinderException с сообщением

'System.Dynamic.DynamicObject' не содержит определения для 'BanReason'.

Я использую Visual Studio 2012 с .NET 4.5 и локальным сервером IIS с помощью ApplicationPool с .NET 4.0. На другом компьютере с одинаковой конфигурацией все работает красиво и никаких исключений не выбрасывается.

Пожалуйста, не советуйте использовать другие методы, такие как ViewData [""] и создание отдельной модели, я не хочу менять код, хорошо работающий на другой машине.

Я думаю, что это проблема с ошибкой. Любые догадки будут оценены. Благодаря

4b9b3361

Ответ 1

ваш код в порядке, ViewBag имеет динамические свойства и в Runtime все свойства назначаются.

Это исключение - это обычное исключение CLR. Попробуйте выполнить следующие шаги, он будет работать, я надеюсь. Открыть Visual Studio

  • Отладка → Исключения → (Снимите флажок) Исключения для обычного языка Runtime

если все еще возникают проблемы

  • Инструменты → Параметры → Отладка (развернуть) → Общие → (Проверить) Включить только мой код

надеюсь, что это поможет, его работа для меня

Нажмите здесь для подробных изображений

Ответ 2

Я считаю, что это ваша проблема из другого ответа stackoverflow:

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

Если вам нужно отправить его с другого контроллера, вы должны использовать параметр в своем методе действий, тогда вы можете установить ViewBag.Message в переданный параметр.

ViewBag RuntimeBinderException (MVC 4, ASPX)