2014-02-07 2 views
0

에서 Web.config를 기반으로 DropDownList로 다음과 같이 내보기에서 드롭 다운리스트를 가지고 :더 우아한 방법

@Html.DropDownList("ServerListSL", ViewData["ServerList"] as SelectList, new { @class="form- 
    control", id="chosen-server-name"}) 

가 지금은 웹에있는 값을 기준으로 선택된 값을 .Config 파일은 다음과 같습니다 :

public ActionResult Index() 
    { 
     List<SelectListItem> serverItems = new List<SelectListItem>(); 

     if (@System.Configuration.ConfigurationManager.AppSettings["server:serverName"].ToString() == "P") 
     { 
      serverItems.Add(new SelectListItem { Text = "P", Value = "P", Selected = true }); 
      serverItems.Add(new SelectListItem { Text = "A1", Value = "A1"     }); 
      serverItems.Add(new SelectListItem { Text = "A2", Value = "A2"     }); 
      serverItems.Add(new SelectListItem { Text = "T1", Value = "T1"     }); 
      serverItems.Add(new SelectListItem { Text = "T2", Value = "T2"     }); 
     } 
     else if (@System.Configuration.ConfigurationManager.AppSettings["server:serverName"].ToString() == "A1") 
     { 
      serverItems.Add(new SelectListItem { Text = "P", Value = "P"     }); 
      serverItems.Add(new SelectListItem { Text = "A1", Value = "A1", Selected = true }); 
      serverItems.Add(new SelectListItem { Text = "A2", Value = "A2"     }); 
      serverItems.Add(new SelectListItem { Text = "T1", Value = "T1"     }); 
      serverItems.Add(new SelectListItem { Text = "T2", Value = "T2"     }); 
     } 
     else if (@System.Configuration.ConfigurationManager.AppSettings["server:serverName"].ToString() == "A2") 
     { 
      serverItems.Add(new SelectListItem { Text = "P", Value = "P"     }); 
      serverItems.Add(new SelectListItem { Text = "A1", Value = "A1"     }); 
      serverItems.Add(new SelectListItem { Text = "A2", Value = "A2", Selected = true }); 
      serverItems.Add(new SelectListItem { Text = "T1", Value = "T1"     }); 
      serverItems.Add(new SelectListItem { Text = "T2", Value = "T2"     }); 
     } 
     else if (@System.Configuration.ConfigurationManager.AppSettings["server:serverName"].ToString() == "T1") 
     { 
      serverItems.Add(new SelectListItem { Text = "P", Value = "P"     }); 
      serverItems.Add(new SelectListItem { Text = "A1", Value = "A1"     }); 
      serverItems.Add(new SelectListItem { Text = "A2", Value = "A2"     }); 
      serverItems.Add(new SelectListItem { Text = "T1", Value = "T1", Selected = true }); 
      serverItems.Add(new SelectListItem { Text = "T2", Value = "T2"     }); 
     } 
     else if (@System.Configuration.ConfigurationManager.AppSettings["server:serverName"].ToString() == "T2") 
     { 
      serverItems.Add(new SelectListItem { Text = "P", Value = "P"     }); 
      serverItems.Add(new SelectListItem { Text = "A1", Value = "A1"     }); 
      serverItems.Add(new SelectListItem { Text = "A2", Value = "A2"     }); 
      serverItems.Add(new SelectListItem { Text = "T1", Value = "T1"     }); 
      serverItems.Add(new SelectListItem { Text = "T2", Value = "T2", Selected = true }); 
     } 

     ViewData["ServerList"] = serverItems; 

     return View(); 
    } 

나는 이것이 더 우아하게 이루어질 수 있다는 강한 의구심을 가지고 있습니다. 어떤 아이디어?

답변

1
List<SelectListItem> serverItems = new List<SelectListItem>(); 
      serverItems.Add(new SelectListItem { Text = "P", Value = "P" }); 
      serverItems.Add(new SelectListItem { Text = "A1", Value = "A1" }); 
      serverItems.Add(new SelectListItem { Text = "A2", Value = "A2" }); 
      serverItems.Add(new SelectListItem { Text = "T1", Value = "T1" }); 
      serverItems.Add(new SelectListItem { Text = "T2", Value = "T2" }); 

      string selectedValue = System.Configuration.ConfigurationManager.AppSettings["server:serverName"].ToString(); 

      SelectListItem item = serverItems.Where(t => t.Value == selectedValue).SingleOrDefault(); 

      if (item != null) 
      { 
       item.Selected = true; 
      } 
관련 문제