2013-12-09 2 views
0

ASP.NET MVC를 처음 사용하며 다음과 같은 상황이 있습니다. 적절한 모델이나 뷰를 만드는 데 도움이 필요합니다.ASP.NET MVC4 반환 목록 <T>보기에서 다시 모델

나는 지금 아래의 모델을 가지고있다.

public class ExtrasModel 
{ 
    public List<ExtraItem> ExtraItems { get; set; } 
    public DateTime FlightArrivalTime { get; set; } 
    public PickupInfoType PickupInfo {get; set; } 
} 


public class ExtraItem 
{ 
    public string ExtraInfo { get; set; } 
    public int ProdExtraId { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public double Cost { get; set; } 
    public int CostType { get; set; } 
    public string Currency { get; set; } 
    public int Quantity { get; set; } 
    public double TotalCost { get; set; } 
} 

엑스트라 목록은 데이터베이스에서 가져옵니다.

이제
@foreach(var extra in Model.ExtrasList) 
{ 
     <tr> 
      <td> 
       //Not sure what code to put here 
       @Html.DropDownListFor(p => p.ExtrasList, new SelectList(listItems, "Value", "Text", extra.Quantity), new { id = extra.ProdExtraId }) 
      </td> 
      <td>@extra.Name</td> 
      <td>@string.Format("{0} {1}", extra.Cost, extra.Currency)</td> 
     </tr> 
    } 

방법보기가 엑스트라 선택 수량과 모델을 반환하게 :

이 내가보기를 어떻게?

미리 감사드립니다.

답변

0

요소를 폼에 배치하면 서버에 다시 게시되고 해당 유형에 대한 사용자 지정 편집기 템플릿을 만들 수 있습니다. 이렇게하면 열거 형과 함께 Html.EditorFor를 사용하십시오.

뷰 폴더에 EditorTemplates 폴더를 만든 다음 강력한 형식의 새 부분 뷰를 추가하십시오. 이름을 ExtraItem으로 지정하십시오. 열거 형의 각 개별 항목에 대해이보기에 마크 업을 넣습니다.

당신이 사용하는 경우 :

@Html.EditorFor(x=> x.ExtraItems) 

이 같은 출력을 얻을 것이다 :

<input id="ExtraItems_0__name" name="ExtraItems[0].name" type="hidden" value="aName"> 

공지 배열 스타일의 이름입니다. 양식이 다시 게시되면 서버가 열거 형을 올바르게 인식합니다.

0

ExtraItem 모델의 경우 편집기 템플릿을 작성하십시오. Editor Template의 내용은 기본적으로 루프의 내용과 같습니다.

다음과 같은 문으로 루프를 교체 :

@Html.EditorFor(x => x.ExtraItems) 

이 그것을해야한다.