加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:33:23 所属栏目:asp.Net 来源:网络整理
导读:考虑这个简单的控制器: 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"
考虑这个简单的控制器:
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);
}

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

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

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

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

@if (ViewBag.Has("Error"))
{
    // Injecting JavaScript here
}

但是,我得到这个错误:

Cannot perform runtime binding on a null reference

任何想法?

解决方法

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

以下代码应该工作:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读