2014-01-29 4 views
0

잠시 동안 드롭 다운 목록을 채우려고했지만 도움을 주셔서 감사합니다. 모델과 뷰 모델이 있고 Dropdownlist를 채우고보기로 보내려고하므로 사용자가 cartype을 선택하고 submit을 클릭 할 수 있습니다.ASP.NET MVC 드롭 다운 목록 채우기

public class Cars 
{ 
    public int CarId { get; set; } 
    public string Name { get; set; } 
} 

public class CarViewModel 
{ 
    public int SelectedCarId { get; set; } 
    public IEnumerable<SelectListItem> CarTypes; 

} 

public ActionResult FillDropDown() 
{ 
    var model = new ViewModel(); 
    model.CarTypes = (from s in context.CarTypes 
         select new SelectListItem() 
         { 
         Text = s.Name, 
         Value = SqlFunctions.StringConvert((double)s.Id).Trim(), 
         }).ToList<SelectListItem>(); 

    return View(model); 
} 

그래서보기에서이를 렌더링하는 방법에 대해 도움을 드리고 싶습니다. 나는 다음을 시도했지만 nullreference 예외가 발생합니다.

@Html.BeginForm("FillDropDownList","Home", FormMethod.Post,null) 
{ 
    @Html.DropDownListFor(x => x.SelectedCarId, Model.CarTypes); 
    <input type="submit" value="submit" /> 
} 
+1

작업 결과에서 'ViewModel'대신 'CarViewModel'을 사용하십시오. – ssilas777

+1

예외는 어디서 들으십니까? '문맥'은 어디에서 왔는가? 그것은'null'입니까? 'Model.CarTypes' 또는'Model'이'null'입니까? – meilke

+0

뷰에 보낼 때 올바른 데이터가 채워지는 것을 볼 수 있습니다. 뷰 반환 (모델). 하지만 그때 줄에 : @ Html.DropDownListFor (x => x.SelectedCarId, Model.CarTypes); Model.CarTypes가 비어 있다는 nullreference 예외가 발생합니다. – Zedex

답변

0

봅니다 CarViewModel 대신 뷰 모델을 사용합니다.

public ActionResult FillDropDown() 
{ 
    var model = new CarViewModel(); //CarViewModel instead of ViewModel 
    model.CarTypes = (from s in context.CarTypes 
        select new SelectListItem() 
        { 
         Text = s.Name, 
         Value = SqlFunctions.StringConvert((double)s.Id).Trim(), 
        }).ToList<SelectListItem>(); 

    return View(model); 
} 

편집 :

가 FillDropDown() 메소드에서,

public class CarViewModel 
{ 
    public int SelectedCarId { get; set; } 
    public SelectList CarTypes; 
} 

확인 SelectListItem가 null가 아닌지 확인 selectList의에 CarViewModel에 IEnumerable을 속성을 변경하십시오.

+0

thx! 실제로 작동하지 않는이 줄입니다 : @ Html.DropDownListFor (x => x.SelectedCarId, Model.CarTypes); selectedCarId를 다시 게시하고 싶습니다. 모델에 올바른 데이터가 채워집니다. – Zedex

+0

답변을 다시 업데이트했습니다. – SamekaTV

관련 문제