2012-07-11 2 views
3

POST가 진행되는 동안 위의 오류가 발생했습니다. 오류가 발생하는 근본 원인은 "DropDownListFor"입니다 (복수형 SelectList가 두 번 호출 됨). 그렇다면 솔루션을 제안 하시겠습니까?이 개체에 대해 정의 된 매개 변수없는 생성자가 없습니까?

"x => x.Values"에서 "x => x.Name"으로 변경하면 "또한 'DDLView.Name'키가있는 'IEnumerable'유형의 ViewData 항목이 없습니다. "

편집기 템플릿

@model DropDownListViewModel 

@Html.LabelFor(x=>x.Values, Model.Label) 
@Html.DropDownListFor(x=>x.Values, Model.Values) 

보기 모델

public class HomePageViewModel 
{ 
    public DropDownListViewModel DDLView { get; set; } 
} 

public class DropDownListViewModel 
{ 
    public string Label { get; set; } 
    public string Name { get; set; } 
    public SelectList Values { get; set; } 
} 

컨트롤러

public ActionResult Index() 
    { 
     HomePageViewModel homePageViewModel = new HomePageViewModel(); 

     homePageViewModel.DDLView = new DropDownListViewModel 
             { 
              Label = "drop label1", 
              Name = "DropDown1", 
              Values = new SelectList(
                 new[] 
                  { 
                   new {Value = "1", Text = "text 1"}, 
                   new {Value = "2", Text = "text 2"}, 
                   new {Value = "3", Text = "text 3"}, 
                  }, "Value", "Text", "2" 
                 ) 
             }; 
} 

[HttpPost] 
    public ActionResult Index(HomePageViewModel model) 
    { 
     return View(model); 
    } 

보기

@model Dynamic.ViewModels.HomePageViewModel 
@using (Html.BeginForm()) 
{ 
@Html.EditorFor(x=>x.DDLView) 


<input type="submit" value="OK" /> 

은}

답변

3

문제 selectList의 그것을 인스턴스화 할 수 없습니다 매개 변수가없는 생성자 및 모델 바인더를하지 않는다는 것입니다,하지만 당신은 다시 게시하려고합니다. 원래 DropDownListViewModel

에 편집기 템플릿

1) 변경

@Html.DropDownListFor(x=>x.Values, Model.Values) 

@Html.DropDownListFor(x=>x.ValueId, Model.Values) 

2) 추가 다음 :

는 구현 2 가지 문제의 변화를 해결하기 위해

[ScaffoldColumn(false)] 
public string ValueId { get; set; } 

이제 게시 작업 매개 변수가 올바른 값으로 채워집니다.

+0

thnx는 답장을하지만 VIEW에 작성해야하며 편집기 템플릿은 무엇입니까? – user584018

관련 문제