2012-01-10 4 views
2

드롭 다운 목록과 함께 번들링해야하는 MVC 목록 페이지를 작성 중입니다.
저는 ASP.net MVC에 매우 후배인데, 올바르게 실행되고 드롭 다운 목록을 동적으로 선택하는 방법을 모릅니다.모델 클래스를 사용하여 Asp.net MVC 드롭 다운 목록 바인딩

저는 두 모델 클래스

다음
public class CycleType 
{ 
    public int CycleTypeID { get; set; } 
    public string Type { get; set; } 

    public List<CycleModel> CycleModels { get; set; } 
} 

----------------------------------------------------------- 

public class CycleModel 
{ 
    public int CycleModelID { get; set; } 
    public int CycleTypeID { get; set; } 
    public string Model { get; set; } 

    public virtual CycleType CycleType { get; set; } 
} 

하나 개의 컨트롤러 클래스, 내 프로그램을 실행하면

public class CycleModelController : Controller 
{ 
UnitOfWork<CycleModel> unitOfWork = new UnitOfWork<CycleModel>(); 
UnitOfWork<CycleType> unitOfWork_cycleType = new UnitOfWork<CycleType>(); 

... 

[HttpGet] 
public ActionResult Edit(int CycleModelID) 
{ 
    CycleModel cycleModel = unitOfWork.GenericTEntityRepository.GetByID(CycleModelID); 
    ViewBag.CycleType = new SelectList(unitOfWork_cycleType.GenericTEntityRepository.Get(orderBy: CycleTypes => CycleTypes.OrderBy(CycleType => CycleType.Type))); 
    return View(cycleModel); 
} 

... 
} 

그런 다음 한 면도기 파일,

<div class="editor-field"> 
@*Html.DropDownList("CycleType")*@ 
@*Html.EditorFor(model => model.CycleTypeID)*@ 

@Html.DropDownListFor(model => model.CycleTypeID, 
           new SelectList(ViewBag.CycleType, "Type", "CycleTypeID")) 
@Html.ValidationMessageFor(model => model.CycleTypeID) 
</div> 

, 나는 오류 메시지가

DataBinding: 'System.Web.Mvc.SelectListItem' does not contain a property with the name 'Type'. 

1) 어떻게하면이 코드를 수정할 수 있습니까?
2) 항목을 동적으로 선택하려면 어떻게해야합니까?

모든 제안은 정말 감사하겠습니다.

답변

2

ViewBag.CycleType 이미 SelectList이다. 따라서 직접 사용할 수 있습니다.

@Html.DropDownListFor(model => model.CycleTypeID, (SelectList)ViewBag.CycleType) 

다음과 같이 컨트롤러 코드를 변경할 수 있습니다.

ViewBag.CycleType = new SelectList(
     unitOfWork_cycleType.GenericTEntityRepository.Get(
     orderBy: CycleTypes => CycleTypes.OrderBy(CycleType => CycleType.Type)), 
     "Type", "CycleTypeID"); 
+0

대단히 감사합니다. @Eranga. –