2010-05-03 2 views
7

나는 나의 create.aspx 중 하나의 드롭 다운리스트를 사용하지만 일부는 방법 일 것 같지 않습니다 ... asp.net-mvc dropdownlist에 무슨 문제가 있습니까? ,

public IEnumerable<SelectListItem> FindAllMeasurements() 
    { 
     var mesurements = from mt in db.MeasurementTypes 
          select new SelectListItem 
          { 
          Value = mt.Id.ToString(), 
          Text= mt.Name 
          }; 
     return mesurements; 
    } 

내 컨트롤러

,

public ActionResult Create() 
    { 
     var mesurementTypes = consRepository.FindAllMeasurements().AsEnumerable(); 
    ViewData["MeasurementType"] = new SelectList(mesurementTypes,"Id","Name"); 
    return View(); 
    } 

내 create.aspx이있다

<p> 
    <label for="MeasurementTypeId">MeasurementType:</label> 
    <%= Html.DropDownList("MeasurementType")%> 
    <%= Html.ValidationMessage("MeasurementTypeId", "*") %> 
    </p> 

나는이를 실행하면 내가 가지고 이러한 오류,

답변

7

를 참조하십시오.

public ActionResult Create() 
{ 
    var mesurementTypes = consRepository.FindAllMeasurements(); 
    ViewData["MeasurementType"] = mesurementTypes; 
    return View(); 
} 

나 :

public ActionResult Create() 
{ 
    ViewData["MeasurementType"] = new SelectList(db.MeasurementTypes, "Id", "Name"); 
    return View(); 
} 

강력한 형식의 뷰를 사용하여 세 번째 선호하는 방법도 있습니다 :

public ActionResult Create() 
{ 
    var measurementTypes = new SelectList(db.MeasurementTypes, "Id", "Name"); 
    return View(measurementTypes); 
} 

및보기에이 :

당신은 두 가지 옵션이 있습니다

<%= Html.DropDownList("MeasurementType", Model, "-- Select Value ---") %> 
+0

@ Ya darin that worked ... 목록에서 0 번째 색인으로 "선택"을 추가하는 방법은 무엇입니까? –

+0

+1 Darin :) arg, 너무 느림 : ( –

+0

@PieterG 목록에서 0 번째 색인으로 "Select"를 추가하는 방법? –

1

오류 메시지에서 암시하는 것처럼 IEnumerable<Materials>이 아닌 IEnumerable<SelectList>이 필요합니다.

SelectList 생성자에는 IEnumerable을 사용하는 오버로드가 있습니다. 당신은 당신이 이미 ValueText 속성을 지정했기 때문에 올바르지 않습니다 IEnumerable<SelectListItem>에서 새 SelectList 만드는 컨트롤러에서 .net MVC, SelectLists, and LINQ

+0

@ 로버트는 내 편집을 보았습니다 ... –

+0

@Pandiya : 이제 완전히 다른 질문입니다. 당신이'SelectList'를 발견 한 것을 봅니다. –

관련 문제