使用国家/地区名称创建下拉列表

时间:2013-05-01 17:45:20

标签: c# drop-down-menu country

我想创建一个包含国家/地区名称的下拉列表。

我试过这个:

ViewBag.country =
                from p in
                    CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures)
                               .OrderBy(c => c.Name)
                select new SelectListItem
                    {
                        Text = p.EnglishName,
                        Value = p.DisplayName
                    };

但不是给我国家的名字,它给了我语言,然后是语言的国家......

这是视图,简单为“你好”:

Country: @Html.DropDownList("country") 

我做错了什么?谢谢!

注意 我无法使用下拉列表,因为我视图中的国家/地区下拉列表未与我的模型绑定。我只想填充一个下拉列表,其中包含国家/地区名称作为字符串,我将在之后重复使用。

3 个答案:

答案 0 :(得分:0)

尝试更改

@Html.DropDownList("country") 

@Html.DropDownListFor(model => model.Country, (IEnumerable<SelectListItem>)ViewBag.country)

答案 1 :(得分:0)

试试这个

DataTable Country= ViewBag.country;
var country = (from L in Country.AsEnumerable()
                       select new
                       {
                           Value = L["DisplayName"],
                           Text = L["EnglishName"]
                       });    

@Html.DropDownList("ddlCountry", new SelectList(country, "Value", "Text"), "--Select--", new { style = "width:150px" })

答案 2 :(得分:0)

国家名称实际上可以从RegionInfo中检索。试试这个:

var countries = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Select(c => new RegionInfo(c.LCID)).Distinct().OrderBy(c => c.EnglishName);
ViewBag.country = new SelectList(countries, "Name", "EnglishName");