【问题标题】:Does model contain an object?模型是否包含对象?
【发布时间】:2017-01-13 04:32:56
【问题描述】:

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

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

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

不包含“foo”的定义

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

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

这样的事情可能吗?

【问题讨论】:

  • this 怎么样?
  • 如果他们有共同点,你应该使用合同来建立他们之间的关系。

标签: c# asp.net-mvc


【解决方案1】:

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

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

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

【讨论】:

  • 是的,看起来确实很尴尬。谢谢你的回答。我会考虑的。我可能需要重新考虑如何使用这个共享视图。
  • 不客气!我认为你应该重新考虑这种共享观点的目的。
【解决方案2】:

我找到了一个看起来相当不错的解决方法。在四个模型中,我添加了一个属性:

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.
  }

【讨论】:

    猜你喜欢
    • 2022-11-09
    • 1970-01-01
    • 2020-06-07
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多