【发布时间】:2012-01-28 06:45:36
【问题描述】:
考虑这个简单的控制器:
Porduct product = new Product(){
// Creating a product object;
};
try
{
productManager.SaveProduct(product);
return RedirectToAction("List");
}
catch (Exception ex)
{
ViewBag.ErrorMessage = ex.Message;
return View("Create", product);
}
现在,在我的Create 视图中,我想检查ViewBag 对象,看看它是否具有Error 属性。如果它有错误属性,我需要在页面中注入一些 JavaScript,向我的用户显示错误消息。
我创建了一个扩展方法来检查这个:
public static bool Has (this object obj, string propertyName)
{
Type type = obj.GetType();
return type.GetProperty(propertyName) != null;
}
然后,在Create视图中,我写了这行代码:
@if (ViewBag.Has("Error"))
{
// Injecting JavaScript here
}
但是,我收到此错误:
无法对空引用执行运行时绑定
有什么想法吗?
【问题讨论】:
-
究竟是什么代码产生了这个错误?
-
@JohnSaunders,如您所见,我在控制器中设置了
ViewBag.Error?怎么可能是空的? -
@AndrewBarber,这条线
@if (ViewBag.Has("Error")) -
@SaeedNamati:我不知道。你为什么不知道?试试
@if (ViewBag == null)看看结果如何。
标签: asp.net-mvc-3 dynamic razor null viewbag