2013-08-16 2 views
1

내 모델을 작동하게하는 방법이다 :DropDownListFor MVC :이

public string Vehicle 

    public DropDownListModel() 
    { 
     List<SelectListItem> items = new List<SelectListItem>(); 
     items.Add(new SelectListItem() { Text = "one", Value = "one" }); 
     items.Add(new SelectListItem() { Text = "two", Value = "two" }); 
     SelectList items2 = new SelectList(items); 
     VehicleList = items2; 
    } 

    public string Vehicle 
    { 
     get; 
     set; 
    } 

    public SelectList VehicleList 
    { 
     get; 
     set; 
    } 

}

가 나는 dropdwonlist에 selectList의 렌더링하고 싶지만 내가 무엇을 얻고 것은

enter image description here

입니다입니다

내보기 :

@using (Html.BeginForm("Post","Guestbook")) 
    { 
    @Html.Label("Name") @Html.DropDownListFor(m=> m.Vehicle,Model.VehicleList)<br /> 

    <input type="submit" name="submit" value="submit" /> 
    } 

내가 뭘 잘못하고있어. 나는 이것에 꽤 많은 시간을 보내고 여러 가지 질문을 확인했지만 이것을 해결할 수 없었다.

+0

이 코드의 더 완전한 버전을 제공하십시오. 지금은 구문 오류가 있습니다. –

+0

코드가 꽤 불완전합니다. 속성 선언이없는 getter와 setter가 있습니다. 'string Vehicle'을 할당하는 코드가 없습니다 ('.ToString()'메소드를 오버라이드하지 않는 이유가 무엇입니까?) – Tseng

+0

미안하지만, 누락 된 행을 추가했습니다. 내 코드에있었습니다. –

답변

2

VehicleList가 초기화되지 않는 최대 값에 동의합니다. 목록에 설정하더라도 값과 데이터가 어떤 속성인지 아직 알 수 없습니다. 그래서 같은 모델을 변경해보십시오 :

public class DropDownListModel 
{ 
    public DropDownListModel() 
    { 
     List<SelectListItem> items = new List<SelectListItem>(); 
     items.Add(new SelectListItem() { Text = "one", Value = "one" }); 
     items.Add(new SelectListItem() { Text = "two", Value = "two" }); 
     VehicleList = new SelectList(items, "Value", "Text"); 
    } 

    public string Vehicle { get; set; } 

    public SelectList VehicleList { get; set; } 
} 
+0

해결되지 않았을 것입니다. 그것은 나 자신 :) –

2

VehicleList은 초기화되는 곳이 어디입니까? DropDownListModel가 호출되고있는 것처럼 보이지 않습니다. 설정 한 items2은 무엇입니까?

대신 this.VehicleList을 설정해보세요.

0

당신은 당신이 무슨 일을하는지 더 명확하게하기 위해 코드를 편집 할 수 있습니다 ...하지만 그것은 매우 분명하다 : 코드가 의도 한대로 정확히 작동하지만, 당신이있어 실제로 그것을 잘못 사용합니다.

SelectList는 기존 SelectListItem 목록을 사용하여 만들 수 없습니다. 생성하려는 해당 HTML 요소의 값과 이름에 해당 항목의 속성을 지정하여 고유 한 항목 모음에 피드를 제공해야합니다. 작성중인 실제 SelectListItem이 표시되므로 코드가 작동합니다 (일종의). 당신은 List 나 다른 IEnumerable에 그것들을 붙이면됩니다. 그러나 두 가지 접근법을 결합하지 마십시오.

다음은 모델 클래스 주어진 작업 예제 :

public class Vehicle 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 
public class Model 
{ 
    public int SelectedId { get; set; } 
    public IEnumerable<Vehicle> Items { get; set; } 
} 

다음 면도기 코드가 작동합니다

@Html.DropDownListFor(m => m.SelectedId, new SelectList(Model.Items, "Id", "Name"))