Только что натолкнулся на интересный эффект при отладке View. Сценарий легко воспроизвести - у меня есть точка останова в View
, в окне просмотра я добавляю ViewBag.ViewData
и значение null
. Однако, если я просто добавлю ViewBag
и разверну объект, я смогу увидеть ViewData
, а это не null
. Я также могу успешно расширить его и увидеть его свойства.
Кто-нибудь может объяснить, является ли это ошибкой или причиной этого поведения?
EDIT
ViewBag.ViewData
на самом деле null
. Например. если у меня есть этот код в представлении:
if (ViewBag.ViewData == null)
{
<span>ViewBag.ViewData is null</span>
}
отображает диапазон. Так что странная часть в том, что я могу развернуть его в окне просмотра и увидеть свойства.
EDIT2
В ответ на ответ @ Darin Dimitrov - я пытался воспроизвести это поведение с помощью пользовательского тестового класса и получаю RuntimeBinderException
при попытке получить доступ к частной собственности: 'SomeClass.SomeProperty' is inaccessible due to its protection level
:
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)
)?