2010-07-28 31 views
0

我有以下表結構:幫我創建我的數據庫中所有Jefes的下拉列表!

alt text

我想編輯區時填充所有Jefes的組合框。意思是我可以改變誰負責一個區域。

這裏是我的AreaController.cs代碼:

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); 
      } 
     } 

注意.FindAllJefes()返回一個IQueryable <>集合。

現在在我的Edit.aspx文件我有以下幾點:

<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> 

我收到此錯誤:

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

+1

Jefe = boss/leader :) – Ahmad 2010-07-28 16:50:42

回答

0

MSDN

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

jefe.FindAllJefes()應該是一個IEnumerable當傳遞給SelectList ctor。你的論點應閱讀jefe.FindAllJefes().ToList()

0

沒有看到您的自定義類是如何設計的,這是一個艱難的一個,而只是大膽的猜測:

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

我不知道你的SelectList類是如何設置,但(可能)你使用「Nombre」作爲ID和顯示值(???)。

因此,您的選擇列表正在尋找名爲「IDJefe」的密鑰,但沒有找到它,因爲您使用了「Nombre」兩次。

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