В простой Viewbag.Title, получение исключения RuntimeBinderException
У меня действительно простой ViewBag.Title. Вот так:
@{
ViewBag.Title = "My Title";
ViewBag.MiniTitle = "Sub - Title";
}
который анализируется на _Layout.cshtml, на
<title>@ViewBag.Title</title>
Однако я получаю это исключение:
Thrown: "'System.Dynamic.DynamicObject' does not contain a definition for 'Title'"
(Microsoft.CSharp.RuntimeBinder.RuntimeBinderException)
Exception Message = "'System.Dynamic.DynamicObject' does not contain a definition for
'Title'", Exception Type = "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"
Я искал, и я не мог найти много информации об этом. Это в основном та же проблема, с которой сталкивался этот парень: http://forums.asp.net/t/1715878.aspx?MVC3+Razor+Viewbag+Title+RuntimeBinderException
Моя проблема тоже такая же, как и последний парень, который опубликовал. Это не создает для меня никаких проблем, проекты отлично работают, а также мои заголовки. Однако мне не нравится тот факт, что исключение вызывается из-за того, что они дороги.
Кто-нибудь знает, как я могу исправить эту проблему? Спасибо!
Ответы
Ответ 1
Может быть, вы используете @ViewBag.Title, прежде чем объявлять его, например, если ваш файл макета имеет
<title>@ViewBag.Title</title>
но вы определяете заголовок LATER в частичном представлении или аналогичном
@{
ViewBag.Title = "My Title";
ViewBag.MiniTitle = "Sub - Title";
}
попробуйте установить ViewBag.Title в действии контроллера, чтобы он был доступен до вызова View()
Ответ 2
Я пробовал это, и он работает для меня:
@(ViewBag.GetType().GetProperty("Title") == null ? "" : ViewBag.Title)
это старый вопрос, но, возможно, он помогает кому-то.
С уважением.
Ответ 3
Я попытался восстановить этот вопрос без везения.
Вы установили ViewBag.Title на главной странице, и эта ошибка возникает из другого представления, в котором вы не определяете ViewBage.Title
имущество.
Так как ViewBag.Title - это локальная переменная главной страницы, другой вид не получит ее и выбрасывает указанную ошибку.
Теперь попробуйте использовать тег ViewBag.MiniTitle.
Вы все еще получаете такую же ошибку?
Пожалуйста, поделитесь.