как получить список стран в выпадающем списке в mvc3?

Я работаю над проектом, и на странице регистрации я хочу получить список  всех стран в выпадающем списке. Может кто-нибудь, пожалуйста, покажи мне, что я  нужно делать в контроллере, в представлении или в любом другом месте? Я имею ввиду Страница регистрации

@model Retail_MVC.Models.registration
@{

    Layout = null;
}

<div class="my_wrapper">
         <div class="my_left_box">
            @Html.LabelFor(model => model.username)
         </div>
         <div class="my_right_box">
           <input type="text" id="txtusername" name="UserName"/>         
         </div>

   </div>
  -- here i want to get dropdownlist for all countries
5
nl ja de
Не могли бы вы показать нам модель, с которой вы переходите к этой точке зрения (регистрация)? Включите ли вы список стран?
добавлено автор Dimitar Dimitrov, источник
нет, не включать .. я хочу получить список стран из Google Api, или любым новым способом ..
добавлено автор Abhijit Pandya, источник

4 ответы

use CultureInfo

// Namespaces You need
using System.Globalization;
using System.Linq;

// GetCountries() method
IEnumerable GetCountries()
{
     return CultureInfo.GetCultures(CultureTypes.SpecificCultures)
                       .Select(x => new RegionInfo(x.LCID).EnglishName)
                       .Distinct()
                       .OrderBy(x => x);
}

EDITS *//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*

class Country
{
    public string ID { get; set; }
    public string Name { get; set; }
}

IEnumerable GetCountries()
{
    return CultureInfo.GetCultures(CultureTypes.SpecificCultures)
         .Select(x => new Country
                         {
                             ID = new RegionInfo(x.LCID).Name,
                             Name = new RegionInfo(x.LCID).EnglishName
                         })
                         .GroupBy(c => c.ID)
                         .Select(c => c.First())
                         .OrderBy(x => x.Name);
}
3
добавлено
@AbhijitPandya, см. Мои правки, если я правильно понял, что вам нужно.
добавлено автор Dmytro, источник
Это не всегда дает вам английское имя.
добавлено автор Ronen Festinger, источник
спасибо, дорогой от этой функции, я получаю список стран, но я хочу получить идентификатор и ценность .. для этого я должен делать в контроллере
добавлено автор Abhijit Pandya, источник
дорогой друг, я получаю то, что мне нужно, но он получает список из 127 стран. Мне нужен список для всех стран мира 244 ..
добавлено автор Abhijit Pandya, источник
Дополнительно: вы можете использовать peric.github.io/GetCountries как источник данных
добавлено автор Elnaz, источник

Есть ряд очень полезных помощников, которые приходят как по умолчанию с ASP.NET MVC framework, но тот, который всегда сбивает с толку людей, это html.DropDownListFor() вспомогательный метод. Поэтому в этом посте я быстро перейду к тем шагам, которые я использую, чтобы заполнить список, а также некоторые из самых интересных функций после его запуска и запуска!

В нашем примере будет просто один раскрывающийся список в форме, которая отображает список стран, из которых вы можете выбрать и отправить.

Во-первых, нам нужно построить модель представления, которая будет заключаться в контракте, который определяет данные, которые может отображать представление.

public class IndexViewModel
{
   //Stores the selected value from the drop down box.
    [Required]
    public int CountryID { get; set; }

   //Contains the list of countries.
    public SelectList Countries { get; set; }
}

public class HomeController : Controller
{
    [HttpGet]
    public ActionResult Index()
    {
        IndexViewModel viewModel = new IndexViewModel();
        viewModel.Countries = new SelectList(GetCountries(), "ID", "Name");
        return View(viewModel);
    }

    [HttpPost]
    public ActionResult Index(IndexViewModel viewModel)
    {
        viewModel.Countries = new SelectList(GetCountries(), "ID", "Name");
        if (!ModelState.IsValid)
        { return View(viewModel); }

        //TODO: Do something with the selected country...
        CMSService.UpdateCurrentLocation(viewModel.CountryID);

        return View(viewModel);
    }
}

@Html.DropDownListFor(x => x.CountryID, Model.Countries)
@Html.DropDownListFor(x => x.CountryID, Model.Countries, "- please select -")

<link href="@Url.Content("~/Content/themes/base/jquery.ui.all.css")"
  type="text/css" rel="stylesheet" />
<script type="text/javascript" src="@Url.Content("></script>
<script type="text/javascript" src="@Url.Content("></script>
<link type="text/css" rel="stylesheet" href="@Url.Content("~/Content/selectmenu.css")" />
<script src="@Url.Content("~/Scripts/selectmenu.js")" type="text/javascript"></script>
<script type="text/javascript">
   $('select').selectmenu();
</script>
3
добавлено
какое пространство имен требуется для этого в контроллере?
добавлено автор Abhijit Pandya, источник
что такое GetCountries() .. это встроенный метод? Я не хочу получать список из базы данных. Я хочу получить список из Google Api или любого другого источника в Интернете ....
добавлено автор Abhijit Pandya, источник

Попробуйте что-нибудь вроде ниже ... это поможет вам ...

In HTML View :

@{
    var CountryItems = new List();
    CountryItems.Add(new SelectListItem { Text = String.Empty, Value = String.Empty });
    foreach (var name in ViewBag.Names)
    {
        CountryItems.Add(new SelectListItem { Text = name, Value = name });
    }
}

@Html.DropDownList("dropDownList", CountryItems)

In Controller :

List countries =new List(2);
var dtList = from ctry in objContext.Details
    select ctry;  //Source of Country
foreach (var dt in dtList)
{
    countries.Add(dt.Name);
}
ViewBag.Names = countries ;
return View(dtList);
1
добавлено
objContext.Details: objContext -is a object and Details - это объект коллекции, такой как словарь
добавлено автор Pandian, источник
«что такое objContext.Details» .. я не могу его получить .. любое пространство имен требует для этого?
добавлено автор Abhijit Pandya, источник
но я не могу получить его
добавлено автор Abhijit Pandya, источник

В вашей модели регистрации добавьте список стран типа - очевидно, это изменится в зависимости от того, какой тип данных вашей страны выглядит

public List Countries { get; set; }

Затем в своем контроллере назначьте свои страны ему из любого источника данных, который вы выбрали

registration.Countries = [list_of_country_objects]

И, наконец, ваше мнение:

@Html.DropDownList("countries", new SelectList(Model.Countries, "CountryId", "CountryName"
0
добавлено
Я не знаю, доступен ли список из Google - на самом деле это не то, что вы просили ИМХО. Учитывая, что список не будет меняться очень часто, почему бы вам не создать таблицу статических данных, я сделал быстрый поиск и нашел список стран и коды ISO
добавлено автор markpsmith, источник
Является этим , что вы имеете в виду?
добавлено автор markpsmith, источник
спасибо за ответ дорогой .. Я знаю этот синтаксис, но в основном мне нужен источник в контроллере, откуда я получаю этот список, например, Google Api или что-то еще, и как, я могу добавить статически, но в базе данных я хочу хранить идентификатор?
добавлено автор Abhijit Pandya, источник
Я хочу получить идентификатор и хранить идентификатор страны, поэтому я не статически стати ...
добавлено автор Abhijit Pandya, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)