"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 [""] и создание отдельной модели, я не хочу менять код, хорошо работающий на другой машине.
Я думаю, что это проблема с ошибкой. Любые догадки будут оценены.
Благодаря
Ответы
Ответ 1
ваш код в порядке, ViewBag имеет динамические свойства и в Runtime все свойства назначаются.
Это исключение - это обычное исключение CLR. Попробуйте выполнить следующие шаги, он будет работать, я надеюсь.
Открыть Visual Studio
- Отладка → Исключения → (Снимите флажок) Исключения для обычного языка Runtime
если все еще возникают проблемы
- Инструменты → Параметры → Отладка (развернуть) → Общие → (Проверить) Включить только мой код
надеюсь, что это поможет, его работа для меня
Нажмите здесь для подробных изображений
Ответ 2
Я считаю, что это ваша проблема из другого ответа stackoverflow:
Как мы видим по вашим комментариям, вы устанавливаете ViewBag.Message на другом контроллере. ViewBag предназначен только для данных для представления, заданного контроллером, который обслуживал представление.
Если вам нужно отправить его с другого контроллера, вы должны использовать параметр в своем методе действий, тогда вы можете установить ViewBag.Message в переданный параметр.
ViewBag RuntimeBinderException (MVC 4, ASPX)