<div"> <div"> <div" />

どのように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 ru de
このビュー(登録)に渡すモデルを私たちに教えてください。あなたはそれに国のリストを含めますか?
追加された 著者 Dimitar Dimitrov,
いいえ、私はGoogleのApiから、または任意の新しい方法からcountrylistを取得したい..含まれていません
追加された 著者 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,
この機能からおかげで、国のリストを取得できますが、私はIDと値を取得したいと思っています。
追加された 著者 Abhijit Pandya,
親愛なる友人、私は必要なものを手に入れますが、それはわずか127カ国のリストです。私は世界のすべての国のリストが必要です244 ..
追加された 著者 Abhijit Pandya,
追加: peric.github.io/GetCountries をデータソースとして使用できます
追加された 著者 Elnaz,

ASP.NET MVCフレームワークにはデフォルトとして非常に有用なヘルパーがいくつかありますが、常に人々を混乱させるようなものはHtml.DropDownListFor()ヘルパーメソッドです。だから、この記事では、私がリストを作成するために使用する手順や、一度起動したらもっとファンキーな機能のいくつかをすばやく説明します。

この例では、選択して提出できる国のリストを示すフォーム上にドロップダウンリストが1つだけ表示されます。

まず、ビューが表示できるデータを決定するコントラクトになるビューモデルを構築する必要があります。

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()は何ですか?inbuiltメソッドですか?私はデータベースからリストを取得したくない..私は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 - オブジェクト、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から利用可能かどうかわからない - それは本当にあなたがIMHOに尋ねたものではありません。リストが頻繁に変わらないことを考えれば、静的なデータの表を作成するのはなぜですか?私は簡単な検索を行い、国とISOコードのリスト
追加された 著者 markpsmith,
あなたはこれという意味ですか?
追加された 著者 markpsmith,
親愛なる答えをありがとう..私はこの構文を知っているが、主に私はどこから私はこのリストをGoogleのApiのような何か、私は静的に追加することができますが、私はIDを格納したいのですがコントローラのソースが必要ですか?
追加された 著者 Abhijit Pandya,
私は静かに使用していないので、国のIDと店舗IDを取得したい...
追加された 著者 Abhijit Pandya,