2016-05-09 9 views
0

これは私が持っているカミソリです:ハードコードする2つのアイテム

@Html.DropDownListFor(m => m.CountryCode, ???? , new { @class = "form-control styled-select", id = "CountryCode", name = "CountryCode" }) 

は、どのように私はに「USA」と「CANADA」の選択したリスト項目を作成することができます???? param?私は構文の権利を得ることができませんでした。

答えて

3

新しいモデルをビューモデルに追加して、国のリストを保存します。このプロパティのタイプはSelectListItemのコレクションにすることができます。

public class CreateSomething 
{ 
    public List<SelectListItem> Countries { set;get;} 
    //Your existing properties 
    public string CountryCode { set;get; } 
} 

GETアクションでは、このプロパティにデータをロードするだけです。

public ActionResult Create() 
{ 
    var vm= new CreateSomething(); 
    vm.Countries= new List<SelectListItem> { 
             new SelectListItem { Value="USA", Text="USA"}, 
             new SelectListItem { Value="CANADA", Text="Canada"} 
    }; 
    return View(vm); 
} 

とあなたのビューで

@model CreateSomething 
@using(Html.BeginForm()) 
{ 
    <label> Select a country </label> 
    @Html.DropDownListFor(m => m.CountryCode,Model.Countries) 
    <input type="submit" /> 
} 
2

ハードコードされたオプション

あなたは本当にハードコーディングされたオプションを望んでいた場合、あなたは2つの目標値を含まSelectListを作成することができます。

@Html.DropDownListFor(m => m.CountryCode, new SelectList(new []{ "USA","CANADA" }), ...) 

これらのオプションがない場合はモデルに

を使用し、それ以外の場合は

<select id='CountryCode' name='CountryCode' class='form-control styled-select'> 
    <option>USA</option> 
    <option>CANADA</option> 
</select> 

:明示的に正直少し読みやすく、実際のHTMLヘルパーを使用するよりもあるかもしれないあなたのためにそれを処理するため<select>要素を、作成これらのプロパティを格納するモデルを作成するか、ViewBagのようなコンテナに格納して、ビューに渡します(the approach in Shyju's responseと似ています)。

関連する問題