模型是否包含对象?

时间:2017-01-12 20:02:25

标签: c# asp.net-mvc

我有一个共享视图,由4个不同的父视图使用。在共享视图中,我需要做一个简单的检查:

if (Model.foo == barr)
   {...]

问题是,在4个模型中的一个模型中,没有foo。我宁愿不将它添加到一个模型中以避免错误:

  

不包含'foo'

的定义

我想知道我是否可以进行预检,比如..

if (Model.Contains(foo) && Model.foo == bar)
{...}

有可能吗?

2 个答案:

答案 0 :(得分:1)

如果要检查对象是否包含属性,可以使用反射:

if ((typeof(Model)).GetProperty("foo") && Model.foo == bar)

但整个事情似乎有点尴尬。基本上,我从未见过在视图中使用的反射。

答案 1 :(得分:0)

我找到了一个似乎非常好的解决方法。在四个模型的每个模型中,我添加了一个属性:

public int MySharedViewSource { get; set; }

然后在视图中......

if (Model.MySharedViewSource == 1}
  { 
      // Wnatever is in here only gets executed if the source is 1,
      // so I can reference Model.foo and not worry about errors 
      // when using this shared view from a model that does not have foo in it.
  }