public enum Language
{
Sinhala = 1,
English = 2,
}
I will set the language items as follows in the controller method.
//Set Language
var languageItems = new List
var names = Enum.GetNames(typeof(Language));
Enum.GetValues(typeof(Language));
for (var i = 0; i < names.Length; i++)
{
languageItems.Add(new SelectListItem
{
Text = names[i],
Value = values.GetValue(i).ToString()
});
}
ViewData["Language"] = languageItems;
In the View page I will add the dropdown list using Html helper as follows.
<%=Html.DropDownList("language_text", (System.Collections.Generic.List
This is the simple way to load data to drop down list from Enum.
If you need to load data to drop down list from the Web.config or app.config use the following code in the controller class action.
//Set product code
var productCodes = ConfigurationManager.AppSettings["ProductCodes"];
var productCodeItems = new List
names = productCodes.Split(',');
productCodes.Split(',');
for (var i = 0; i < names.Length; i++)
{
productCodeItems.Add(new SelectListItem
{
Text = names[i],
Value = names[i]
});
}
ViewData["ProductCode"] = productCodeItems;
I have added the Product Codesin the Web config or app config as follows.
<appSettings>
<add key="ProductCodes" value="123,456" />
</appSettings>
You will met a scenario like you need to load a intended selected item to the dropdown list. Then You can use the code like this if you get the data from Enum.
//Set Language
string language = "Sinhala"; //Set the language to be selected item in the drop down
List
string[] namesLanguage = Enum.GetNames(typeof(Language));
Array valuesLanguage = Enum.GetValues(typeof(Language));
for (int i = 0; i < namesLanguage.Length; i++)
{
if (language == namesLanguage[i])
{
languageItems.Add(new SelectListItem
{
Text = namesLanguage[i],
Value = valuesLanguage.GetValue(i).ToString(),
Selected = true
});
}
else
{
languageItems.Add(new SelectListItem
{
Text = namesLanguage[i],
Value = namesLanguage[i]
});
}
}
ViewData["Language"] = languageItems;
Or else use the code like this if you get data from config.
//Set product code
string productCode = "123";//Set the product code to be selected in the drop down
string productCodes = ConfigurationManager.AppSettings["ProductCodes"];
List
while (productCodes.Length > 0)
{
string productCode;
if (productCodes.IndexOf(",") > 0)
{
productCode = productCodes.Substring(0, productCodes.IndexOf(","));
}
else
{
productCode = productCodes;
}
if (productCode.Trim() == productCode)
{
productCodeItems.Add(new SelectListItem
{
Text = productCode,
Value = productCode,
Selected = true
});
}
else
{
productCodeItems.Add(new SelectListItem
{
Text = productCode,
Value = productCode
});
}
if (productCodes.IndexOf(",") > 0)
{
productCodes = productCodes.Substring(productCodes.IndexOf(",") + 1);
}
else
{
break;
}
}
ViewData["ProductCode"] = productCodeItems;
There is on more thing to be remembered when you set the selected item. You may face a problem like the drop down list will not make the selected item you have made selected true like above code snippet but drop down list will load as default. The reason for this problem is that asp.net MVC first looks for a match between the name of the drop down and a property on the model. If there’s a match, the selected value of the SelectList is overridden. Changing the name of the drop down is all it takes to remedy the issue.
So when you need to set selected item to your dropdown list do not use the model parameter name but use a different name. For clear in above code snippets if I use the the same name "Language" or "ProductCode" for drop down list as follows that problem will occur.
<%=Html.DropDownList("Language", (System.Collections.Generic.List
<%=Html.DropDownList("ProductCode", (System.Collections.Generic.List
In order to avoid the problem I used some different names like follows.
<%=Html.DropDownList("language_text", (System.Collections.Generic.List
<%=Html.DropDownList("productCode_text", (System.Collections.Generic.List
0 comments:
Post a Comment