我有一个共享视图,由4个不同的父视图使用。在共享视图中,我需要做一个简单的检查:
if (Model.foo == barr)
{...]
问题是,在4个模型中的一个模型中,没有foo。我宁愿不将它添加到一个模型中以避免错误:
不包含'foo'
的定义
我想知道我是否可以进行预检,比如..
if (Model.Contains(foo) && Model.foo == bar)
{...}
有可能吗?
答案 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.
}