MVC

2017-11-05 12 views
0

내가 컨트롤러 DropDownList로 항목을 선택하여 null 값을 얻고있다.에 @ Html.DropDownList에 null 값을 받고MVC

다음

이 내 코드

컨트롤러

[I 디버그 모드에서 수행하여 보았다]
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 
} 

보기

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

은 상태에서 null 값을 받고 들.

당신은

답변

1

현재 코드 이름 속성 값 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