2017-04-18 74 views
0

我只想問如何通過/更新IEnumerable列表,將用於顯示下拉菜單,因爲我缺少一組行以添加它並更新enumlist,以便我只能獲取文本和值是ArrivedCompleted。這是我在我的模型在我的控制器添加/更新IEnumerable列表

public enum DeliveryPermitStatus 
    { 

     Arrived = 1, 
     Approved = 2, 
     Cancelled = 3, 
     Completed = 4, 
     Submitted = 5 
    } 

代碼,所以我可以添加可枚舉列表中的過濾enumlist和我缺少代碼viewbag更新enumlist將用於在下拉列表顯示

var enumlist = Enum.GetValues(typeof(DeliveryPermitStatus)).Cast<DeliveryPermitStatus>().Select(v => new SelectListItem 
       { 
        Text = v.ToString(), 
        Value = ((int)v).ToString() 
       }); 

       if (User.IsInRole(StaticRoleNames.Admin)) //your condition here 
       { 
        foreach(var item in enumlist) 
        { 
         if(item.Text == "Arrived" || item.Text == "Completed") 
         { 
          //Missing Code Here 

         } 
        } 

       } 

       ViewBag.enumlist = enumlist; 

回答

2

我想你要問/想做的是將ViewBag.enumlist編輯爲基於用戶角色的縮減值集合嗎?如果是這樣,那麼你可以過濾並分配你的if語句裏面的列表,並放棄foreach循環:

var enumlist = Enum.GetValues(typeof(DeliveryPermitStatus)).Cast<DeliveryPermitStatus>().Select(v => new SelectListItem 
      { 
       Text = v.ToString(), 
       Value = ((int)v).ToString() 
      }); 

      if (User.IsInRole(StaticRoleNames.Admin)) //your condition here 
      { 
       ViewBag.enumlist = enumlist.Where(t => t.Text == "Arrived" || t.Text == "Completed"); 
      } 

,或者,如果你需要保持foreach循環,那麼你需要創建一個單獨的列表跟蹤的枚舉列表中的「可用值」的:

var enumlist = Enum.GetValues(typeof(DeliveryPermitStatus)).Cast<DeliveryPermitStatus>().Select(v => new SelectListItem 
      { 
       Text = v.ToString(), 
       Value = ((int)v).ToString() 
      }); 

      List<SelectListItem> availableOptions = new List<SelectListItem>(); 

      if (User.IsInRole(StaticRoleNames.Admin)) //your condition here 
      { 
       foreach(var item in enumlist) 
       { 
        if(item.Text == "Arrived" || item.Text == "Completed") 
        { 
         availableOptions.Add(item); 
        } 
       } 

      } 

      ViewBag.enumlist = availableOptions; 
+2

看起來似是而非的選項+1,否則要求不是從問題本身 –

+0

這很清楚肯定是我正在尋找!謝謝你,先生! –

0

不能元素添加到IEnumerable,但你可以很容易地從它那裏得到一個列表。 只需在分配給var enumlist之前調用ToList()。

現在你可以添加元素,它(小心,而枚舉它不添加元素)