Reputation: 10514
I have a dropdownlist in my view as follows:
@Html.DropDownList("ServerListSL", ViewData["ServerList"] as SelectList, new { @class="form-
control", id="chosen-server-name"})
Now I take the selected value based on a value in the Web.Config file like this:
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();
}
I have a strong suspicion this can be done more elegantly. Any ideas?
Upvotes: 0
Views: 249
Reputation: 821
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;
}
Upvotes: 1