ASP.NET MVC/C#:我可以避免在单行C#条件语句中重复自己吗?

Luc*_*Sam 5 c# asp.net-mvc

在视图中的表中显示Customer的邮件地址时,请考虑以下代码:

<%: Customer.MailingAddress == null ? "" : Customer.MailingAddress.City %>
Run Code Online (Sandbox Code Playgroud)

我发现自己使用了相当数量的这些三元条件语句,我想知道是否有一种方法可以在条件中引用回被评估的对象,以便我可以在表达式中使用它.也许是这样的事情:

<%: Customer.MailingAddress == null ? "" : {0}.City %>
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?我知道我可以创建一个变量来保存值,但是将所有内容保存在视图页面中的一个紧凑的小语句中会很好.

谢谢!

McK*_*Kay 2

不,没有办法在不创建变量或重复自己的情况下精确地执行您所要求的操作,尽管您可以执行以下操作:

(Customer.MailingAddress ?? new MailingAddress()).City ?? string.Empty
Run Code Online (Sandbox Code Playgroud)

这假定新的 MailingAddress 默认情况下其城市属性/字段为空。

如果创建新的 MailingAddress 将城市字段/属性初始化为空字符串,则可以删除最后一个空合并。

但这实际上并不短,而且更黑客(在我看来),而且几乎肯定性能较差。

  • +1不是因为我会使用它,而是我喜欢它如何使用链接:-) (2认同)
  • 我认为这实际上不会达到OP想要的效果。如果 Customer.MailingAddress 不为 null,则该语句的结果是对象 Customer.MailingAddress,但用户需要该对象的 City 属性而不是对象本身。 (2认同)