MVC

2017-11-05 7 views
0

私はコントローラでドロップダウンリストの項目を選択することで、null値を取得しています。中@ Html.DropDownListにnull値を取得MVC

ここ

がある私のコード

コントローラ

[Iは、デバッグモードで実行して見ました] staffRegistrationViewModelで
public ActionResult Index() 
{ 
    var jobStatusList = new SelectList(new[] 
    { 
     new { ID = "1", Name = "Full Time" }, 
     new { ID = "2", Name = "Part Time" }, 
    }, 
    "ID", "Name", 1); 

    ViewData["JobStatusList"] = jobStatusList; 
} 

public ActionResult Create(StaffRegistrationViewModel staffRegistrationViewModel) 
{ 
    //Here is my code 
} 

ビュー

@using (Html.BeginForm("Create", "StaffRegistration", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    @Html.AntiForgeryToken() 
    @Html.DropDownList("jobStatusList",ViewData["JobStatusList"] as SelectList) 
} 

状況でnull値を取得フィールド。

答えて

1

あなたの現在のコードは、name属性の値jobStatusListとドロップダウン要素をレンダリングしているありがとうございました。ビューモデルのプロパティ名がStatusの場合、名前が一致しないため、モデルバインダーによってマップされません。

あなたが名前でSELECT要素をレンダリングする必要がStatus

@Html.DropDownList("Status", ViewData["JobStatusList"] as SelectList) 

しかし、あなたはすでにビューモデルを使用している場合、私はViewDataをを使用する代わりにデータを渡すためにタイプList<SelectListItem>のプロパティを追加することをお勧めします/ ViewBagと一緒にDropDownListForヘルパーメソッド。

@model StaffRegistrationViewModel 
@using (Html.BeginForm("Create", "StaffRegistration")) 
{ 
    @Html.DropDownListFor(a=>a.Status,Model.StatusList) 
} 

あなたのビューモデルを仮定すると

public class StaffRegistrationViewModel 
{ 
    public int Status { set;get;} 
    public List<SelectListItem> StatusList { set;get;} 
} 

とあなたのGETアクションがこのプロパティにリストをロードしStatusListのproeprty

public ActionResult Index() 
{ 
    var list = new List<SelectListItem> 
    { 
     new SelectListItem {Value = "1", Text = "Full Time"}, 
     new SelectListItem {Value = "2", Text = "Part Time"} 
    }; 
    var vm=new StaffRegistrationVm { StatusList=list }; 
    return View(vm); 
} 
+0

はあなたが私にその一覧構文を提供することができますがありますどのように私はプロパティを追加し、ビューのドロップダウンリストを呼び出すことができます。 –

+0

更新された回答を表示 – Shyju