2015-05-04 50 views
0

我見過使用HTML Helpers等方法來處理MVC中的枚舉。我採取了不同的方法,將選中框的字符串[]傳遞迴控制器。我這樣做:C#/ MVC我可以在foreach循環中手動追加多個枚舉標誌嗎?

  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; 

所以,如果/我怎樣才能完成「|」 ...在這個方法論中?

+0

你想投的字符串返回枚舉......有啥問題..你能澄清一點嗎? – noobed

回答

1

琢磨出來的例子on stackoverflow一個很好的解釋。有[國旗]作爲一個屬性的任何枚舉可以通過所有的檢查項目的價值總結這樣解決:

// 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; 
1

您可以使用[FlagAttribute]解釋here。 從那裏,你可以簡單地使用bit-or (|) operator如下

domainProperty.SiteVisibilityFlags |= flagTester; 

也有與關於屬性

+0

是的,正如我所提到的,我使用了flags屬性,但是你的回答並沒有解決問題。不管怎麼說,還是要謝謝你。 –