asp.net-mvc-3 – 检查ViewBag是否具有属性,以有条件地注入JavaScript

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – 检查ViewBag是否具有属性,以有条件地注入JavaScript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑这个简单的控制器:
  1. Porduct product = new Product(){
  2. // Creating a product object;
  3. };
  4. try
  5. {
  6. productManager.SaveProduct(product);
  7. return RedirectToAction("List");
  8. }
  9. catch (Exception ex)
  10. {
  11. ViewBag.ErrorMessage = ex.Message;
  12. return View("Create",product);
  13. }

现在,在我的创建视图中,我想检查ViewBag对象,看看它是否有Error属性。如果它有error属性,我需要注入一些JavaScript到页面中,以显示错误消息给我的用户

我创建了一个扩展方法来检查:

  1. public static bool Has (this object obj,string propertyName)
  2. {
  3. Type type = obj.GetType();
  4. return type.GetProperty(propertyName) != null;
  5. }

然后,在创建视图中,我写了这行代码

  1. @if (ViewBag.Has("Error"))
  2. {
  3. // Injecting JavaScript here
  4. }

但是,我得到这个错误

Cannot perform runtime binding on a null reference

任何想法?

解决方法

你的代码不工作,因为ViewBag是一个 dyanmic object不是一个’真实’类型。

以下代码应该工作:

  1. public static bool Has (this object obj,string propertyName)
  2. {
  3. var dynamic = obj as DynamicObject;
  4. if(dynamic == null) return false;
  5. return dynamic.GetDynamicMemberNames().Contains(propertyName);
  6. }

猜你在找的asp.Net相关文章