Только что наткнулся на интересный эффект при отладке представления. Сценарий легко воспроизвести - у меня есть точка останова в View
, в окне Watch я добавляю ViewBag.ViewData
, а значение равно null
. Однако, если я просто добавлю ViewBag
и разверну объект, я увижу ViewData
, а это не null
. Я также могу успешно развернуть его и увидеть его свойства.
Может ли кто-нибудь объяснить, является ли это ошибкой или что вызывает такое поведение?
РЕДАКТИРОВАТЬ
ViewBag.ViewData
фактически null
. Например, если у меня есть этот код в представлении:
if (ViewBag.ViewData == null)
{
<span>ViewBag.ViewData is null</span>
}
, он отображает диапазон. Странно то, что я могу развернуть его в окне просмотра и увидеть свойства.
EDIT2
В ответ на @Darin Dimitrov ' s ответ - я попытался воспроизвести это поведение с помощью специального тестового класса и получил RuntimeBinderException
при попытке доступа к закрытому свойству: SomeClass.SomeProperty недоступен из-за уровня защиты
]:
public class SomeClass
{
private string SomeProperty;
}
dynamic dynamicObject = new SomeClass();
if (dynamicObject.SomeProperty == null)
{
Console.WriteLine("dynamicObject.SomeProperty is null");
}
В этом случае я не должен получать такое же исключение при доступе к ViewBag.ViewData
в представлении (строка с if (ViewBag.ViewData == null)
)?