2016-08-13 32 views
0

我有一個管理員用來註冊新用戶的觀點。在MVC中使用枚舉時如何過濾dropdownlist的內容?

註冊用戶時,管理員必須選擇用戶將擁有的角色。

我的問題:

我有代表在下拉列表中的角色枚舉我用的是MVC5.1 GetSelectList來用枚舉角色善堂(代碼將在下面跟隨)

所有用戶都有一個角色,並且特殊管理員不應該爲他正在註冊的用戶設置開發者角色,所以我的問題是如何過濾此列表?

如果用戶具有角色「Administrator1」,那麼他應該看到「只讀,管理,編輯」角色,如果用戶具有角色「admin2」,那麼他應該在下拉列表中看到「編輯,只讀」。

一些代碼:

枚舉:

public enum OverWatchRoles 
{ 
    Developer = 0, 
    Administrator = 1, 
    Employee = 2 
} 

查看:

<div class="form-group"> 
    @Html.Label("Roll", new { @class = "col-md-2 control-label" }) 
    <div class="col-md-10"> 
     @Html.DropDownList("Roles", 
      EnumHelper.GetSelectList(typeof(OverWatchRoles)), 
      "Välj Roll", 
      new { @class = "form-control" }) 
    </div> 

回答

1

可以有條件地建立你需要通過檢查建立你的下拉列表中的項目當前用戶角色

List<SelectListItem> roles = new List<SelectListItem>();  
roles = Enum.GetNames(typeof(OverWatchRoles)) 
       .Where(f=>f!=OverWatchRoles.Developer.ToString()) 
       .Select(f => new SelectListItem { Value = f, Text = f }).ToList(); 

ViewBag.Roles = roles; 

而且在你看來,

@Html.DropDownList("Roles") 

如果你有你的觀點視圖模型,你應該用它來傳遞,而不是ViewBag數據。