2016-09-12 3 views
0

가 나는 viewbag 항목에 전달되는 컨트롤러에서 생성 된 목록이 있습니다Viewbag 항목 목록에서 선택 목록을 만들려면 어떻게해야합니까?

   @Html.DropDownList("test", new SelectListItem[]{ 
      new SelectListItem() {Text = "Exemplo1", Value="Exemplo1"}, 
      new SelectListItem() {Text = "Exemplo2", Value="Exemplo2"}, 
      new SelectListItem() {Text = "Exemplo3", Value="Exemplo3"}} 
      , htmlAttributes: new { @class = "form-control" }) 

잘 작동 :

 List<SelectListItem> PTL = new List<SelectListItem>(); 


     List<PT> PTL2 = db.PT.ToList(); 



     foreach (var item in PTL2) 
     { 
      PTL.Add(new SelectListItem { Value = item.ID.ToString(), Text = item.Name }); 
     } 

     ViewBag.PTL2 = PTL2; 

다음을보기에, 나는 여기에 또 다른 질문에서 다음을 시도 하지만 다음과 같이 수정하려고하면 :

   @Html.DropDownList("test", ViewBag.PTL2, htmlAttributes: new { @class = "form-control" }) 

여러 가지 오류가 발생합니다.

나는 여러 가지 조합, 다양한 주물 등을 시도하는데 몇 시간을 보냈지 만, 나는 진전을 보이지 않고있는 것 같습니다.

나는 이렇게 많은 다른 오류를 보았다 - 가장 일반적인 하나, 나는 그러나

'

유형 키 "테스트"를 가지고 IEnumerable<SelectListItem>의 더 ViewData 항목이 없다'는 캐스팅을 시도하고 여기에 다른 질문에 따라 이름을 변경했지만, 나는 단지 이것을 지나갈 수 없습니다.

이 시점에서 나는 수동 HTML 드롭 다운 목록과 내용에 대해 foreach 루프를 만드는 것을 생각하고 있지만 이것은 낭비처럼 보입니다.

내가 잘못 한 것을 아는 사람이 있습니까?

+1

'@ Html.DropDownList ("test", (IEnumerable ) ViewBag.PTL2, ...)'당신도 읽을 것이 좋습니다 [이 질문에 대한 답변] (http : // stackoverflow .com/questions/34366305/viewdata-item-that-the-key-xxx-of-type-system-int32-but-must-be-o)'ViewBag'를 사용하지 마십시오 –

+0

감사합니다. , 나는 그것이 너무 빨리 (단지 작은 내부 도구) 일할 수 있다면 ViewBag를 사용하지 않기 위해 너무 멀리 갈까봐 두렵다. 그러나 나는 다음 시간을 읽고 배우게 될 것이다. – wil

답변

2

두 번째 매개 변수는 드롭 다운 목록을 채우는 데 사용되는 System.Web.Mvc.SelectListItem 개체의 컬렉션이어야합니다. 그러나이 경우 ViewBag 속성을 사용하고 있으며이 유형은 dynamic입니다. 따라서 컬렉션을 SelectListItem 컬렉션으로 캐스팅해야합니다. 그렇지 않으면, 당신은 MVC 4+이 오류가 발생합니다 :

확장 방법은 동적으로 파견 할 수없는

겠어요 - 그 결과로 변경 ViewBag.PTL2 to ViewBag.PTL2 as IEnumerable<SelectListItem>.

+0

마지막 편집을 보내 주셔서 감사합니다! 이중 대괄호와 구문을 이해하는 데 어려움이 있었지만/컴파일 할 수 없었습니다! 다시 시도해보십시오 ... – wil

+0

마지막으로 편집 한/훌륭한 작품으로! 대단히 감사합니다. 타이머가 만료되면 답변으로 표시됩니다. – wil

+0

@wil 기꺼이 도와 드리겠습니다. –