2010-07-28 7 views
0

나는 다음과 같은 테이블 구조를 가지고있는 영역을 편집 할 때 나는 모든 Jefes의 콤보 상자를 채울려고내 데이터베이스에있는 모든 Jefes의 드롭 다운 목록을 만들 수있게 도와주세요!

alt text

합니다. 나는 지역을 담당하는 사람을 바꿀 수있다. .FindAllJefes()가 된 IQueryable <> 컬렉션을 반환하는 것이

public ActionResult Edit(int id) 
     { 
      Area area = areaRepository.GetArea(id); 
      JefeRepository jefe = new JefeRepository();   
      ViewData["Jefes"] = new SelectList(jefe.FindAllJefes(), "Nombre", "Nombre"); 
      return View(area); 
     } 

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Edit(int id, FormCollection formValues) 
     { 
      Area area = areaRepository.GetArea(id); 

      try 
      { 
       UpdateModel(area); 
       areaRepository.Save(); 

       return RedirectToAction("Details", new { id = area.ID }); 

      } 
      catch (Exception) 
      { 
       foreach (var issue in area.GetRuleViolations()) 
       { 
        ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage); 
       } 
       return View(area); 
      } 
     } 

참고 :

여기 내 AreaController.cs 코드입니다.

There is no ViewData item of type 'IEnumerable' that has the key 'IDJefe'.

+1

Jefe = 보스/리더 :) – Ahmad

답변

0

MSDN 당 :

new SelectList(jefe.FindAllJefes(), "Nombre", "Nombre"); 

jefe.FindAllJefes()는 IEnumerable을해야

<fieldset> 
      <legend>Informacion Detallada de Area | <%: Model.Nombre %></legend> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.Nombre) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(model => model.Nombre) %> 
       <%: Html.ValidationMessageFor(model => model.Nombre) %> 
      </div> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.IDJefe) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.DropDownList("IDJefe", (SelectList)ViewData["Jefes"], "(Select Jefe)") %>     
       <%: Html.ValidationMessageFor(model => model.IDJefe) %> 
      </div> 

      <p> 
       <input type="submit" value="Save" /> 
      </p> 
     </fieldset> 

나는이 오류가 :

지금 내 Edit.aspx 파일에 나는 다음을 SelectList ctor에 전달 될 때. 사용자 정의 클래스를 설계하는 방법을 보지 않고 jefe.FindAllJefes().ToList()

0

을 읽어야 귀하의 인수는,이 힘든 일이지만, 단지 추측의 위험을 무릅하기 :

ViewData["Jefes"] = new SelectList(jefe.FindAllJefes(), "Nombre", "Nombre") 

당신의 selectList의 클래스는 설정이 얼마나 모르겠다을 ,하지만 (아마도) 당신은 ID와 표시 값 (???)으로 "Nombre"를 사용하고 있습니다.

그래서 "Nombre"를 두 번 사용했기 때문에 선택 목록에 "IDJefe"라는 키가 있고 찾고 있지 않습니다.

<div class="editor-field"> 
     <%: Html.DropDownList("IDJefe", (SelectList)ViewData["Jefes"], "(Select Jefe)") %>     
     <%: Html.ValidationMessageFor(model => model.IDJefe) %> 
    </div> 
관련 문제