我有这样的模特:
timeNow
在.cshtml文件中,我想显示类似&#34的消息;如果InnerPropertyContainer中的所有属性都设置为False,则没有选择"。所以现在我在cshtml文件中做下一个技巧:
public class MyModelClass
{
/*some properties*/
public InnerPropertyContainer InnerContainer {get;set;}
}
public class InnerPropertyContainer
{
public bool Soccer{get;set;}
public bool Basketball{get;set;}
public bool Golf{get;set;}
/*etc...*/
}
看起来有点像"解决方法"决策。有没有办法使用像
这样的东西@{
bool hasSomethingSelected = false;
}
@if(Model.InnerPropertyContainer.Golf)
{
hasSomethingSelected = true;
/*displaying div's etc*/
}
/*doing same for each propery*/
@if(!hasSomethingSelected)
{
<div>Nothing has been selected.</div>
}
无法找到任何解决方案。
答案 0 :(得分:0)
您可以使用反射,从模型中收集所有布尔属性,提取它们的值并查看它们是否为真:
@{
bool hasSomethingSelected = (from prop in Model.InnerPropertyContainer.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)
where prop.PropertyType == typeof(bool)
select (bool)prop.GetValue(env)).Any(p => p);
}
请记住在剃须刀视图中使用
@using System.Reflection