刚刚在调试视图时遇到了一个有趣的效果。该场景很容易重现 - 我在View
我添加的 Watch 窗口中有一个断点,ViewBag.ViewData
值为null
. 但是,如果我只是添加ViewBag
和扩展对象,我可以看到ViewData
and it is not null
。我还可以成功扩展它并查看它的属性。
谁能解释这是一个错误还是导致这种行为的原因?
编辑
ViewBag.ViewData
实际上是null
。例如,如果我在视图中有此代码:
if (ViewBag.ViewData == null)
{
<span>ViewBag.ViewData is null</span>
}
它显示跨度。所以奇怪的是我可以在监视窗口中展开它并查看属性。
编辑2
作为对@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)
吗?