Model view controller C#/MVC我可以在foreach循环中手动附加多个Enum标志吗?

Model view controller C#/MVC我可以在foreach循环中手动附加多个Enum标志吗?,model-view-controller,enums,flags,Model View Controller,Enums,Flags,我见过在MVC中使用HTML助手等处理枚举的方法。我采用了另一种方法,将复选框的字符串[]传递回控制器。我正在这样做: foreach (string svf in property.SiteVisibilityFlags) { Enums.SiteVisibilityFlags flagTester; if (

我见过在MVC中使用HTML助手等处理枚举的方法。我采用了另一种方法,将复选框的字符串[]传递回控制器。我正在这样做:

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

那么,如果/如何实现“|”。。。在这种方法中?

您可以使用所解释的
[FlagAttribute]
。 从这里,您可以简单地使用
位或(|)运算符
,如下所示

domainProperty.SiteVisibilityFlags |= flagTester;

还有一个非常好的解释,关于属性的例子

已经解决了它。将[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;
//站点可见性标志
int SiteVisibilityTotalValue=0;
foreach(property.SiteVisibilityFlags中的字符串svf)
{
Enums.SiteVisibilityFlags flagTester;
if(枚举TryParse(svf,out flagTester))
{
//求和值以获得总计,并将其转换为枚举
SiteVisibilityTotalValue+=(int)flagTester;
}
}
//将总计转换为枚举
domainProperty.SiteVisibilityFlags=(Enums.SiteVisibilityFlags)SiteVisibilityTotalValue;

是的,正如我提到的,我正在使用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;