我已经看过使用HTML帮助程序等方法来处理MVC中的枚举。我采取了不同的方法,我将复选框的字符串[]传回控制器。我这样做:
foreach (string svf in property.SiteVisibilityFlags)
{
Enums.SiteVisibilityFlags flagTester;
if (Enum.TryParse<Enums.SiteVisibilityFlags>(svf, out flagTester))
{
// add to domainProperty
domainProperty.SiteVisibilityFlags = flagTester; <--Here is where I mean
}
}
现在,我知道通常情况下,使用标记的枚举,您可以执行以下操作:
domainProperty.SiteVisibilityFlags = Enums.SiteVisibilityFlags.Corporate | Enums.SiteVisibilityFlags.Properties;
那么,如果/如何在这种方法中完成&#39; |&#39; ...
答案 0 :(得分:1)
您可以使用[FlagAttribute]
解释here。
从那里你可以简单地使用bit-or (|) operator
如下
domainProperty.SiteVisibilityFlags |= flagTester;
关于属性
的示例on stackoverflow也有一个非常好的解释答案 1 :(得分:1)
想通了。任何以[Flags]作为属性的枚举都可以通过总结所有选中项目的值来解决:
// Site Visibility Flags
int SiteVisibilityTotalValue = 0;
foreach (string svf in property.SiteVisibilityFlags)
{
Enums.SiteVisibilityFlags flagTester;
if (Enum.TryParse<Enums.SiteVisibilityFlags>(svf, out flagTester))
{
// sum up values to get total to them convert to enum
SiteVisibilityTotalValue += (int)flagTester;
}
}
// convert total to Enum
domainProperty.SiteVisibilityFlags = (Enums.SiteVisibilityFlags)SiteVisibilityTotalValue;