2015-04-03 248 views
0

我有一個頁面,它允許用戶更改他們的隱私設置爲:選擇所選項目的下拉列表中的動作

  • 他們貼出的食譜
  • 他們的個人資料
  • 他們公佈名單

我想要組成我的代碼,以便當用戶加載此頁面時,用於選擇其隱私設置的下拉列表顯示其當前設置,因此如果他們的配方隱私設置爲「註冊紅色用戶「,只要他們加載隱私設置頁面,我希望它啓動時選擇」註冊用戶「。

起初,我創建了一個名爲PrivacySettings

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

      PrivacySettings.Add(
       new SelectListItem 
       { 
        Text="Anybody", 
        Value = "0" 
       }); 
      PrivacySettings.Add(
       new SelectListItem 
       { 
        Text = "Registered users", 
        Value = "1" 
       }); 
      PrivacySettings.Add(
       new SelectListItem 
       { 
        Text = "Only me", 
        Value = "2" 
       }); 

然後,我創建三個獨立的SelectList實例SelectListItem實例的列表。以下是我將每個列表的選定值分配給與用戶保存設置相匹配的第一個值的部分。

SelectList RecipePrivacyList = new SelectList(
       PrivacySettings, 
       "Value", 
       "Text", 
       PrivacySettings.First(x => x.Value == LoggedInUser.RecipePrivacy.ToString())); 


      SelectList ProfilePrivacyList = new SelectList(
       PrivacySettings, 
       "Value", 
       "Text", 
       PrivacySettings.First(x => x.Value == LoggedInUserProfile.Privacy.ToString())); 

      SelectList ListPrivacyList = new SelectList(
       PrivacySettings, 
       "Value", 
       "Text", 
       PrivacySettings.First(x => x.Value == LoggedInUser.ListPrivacy.ToString())); 

然後我給你每一種分離ViewData

ViewData["RecipePrivacy"] = RecipePrivacyList; 
ViewData["ProfilePrivacy"] = ProfilePrivacyList; 
ViewData["ListPrivacy"] = ListPrivacyList; 

在我看來,我檢索這些並將它們存儲到變量

var ProfilePrivacy = (SelectList)ViewBag.ProfilePrivacy; 
var RecipePrivacy = (SelectList)ViewBag.RecipePrivacy; 
var ListPrivacy = (SelectList)ViewBag.ListPrivacy; 

最後我用Html.DropDownList() helper方法使用上述變量創建列表

@Html.DropDownList("profile-privacy", ProfilePrivacy, new { @class = "profile-privacy" }) 

加載視圖時,無論用戶的實際設置如何,都會選擇第一個值(「任何人」或值爲0)。

+0

也許看看使用'@ DropDownListFor' – 2015-04-03 18:47:27

回答

1

你必須設置SelectList這樣的選擇項:

SelectList ListPrivacyList = new SelectList(
PrivacySettings, 
"Value", 
"Text", 
PrivacySettings.First(x => x.Value == LoggedInUser.ListPrivacy.ToString()).Value); 
相關問題