2010-04-23 37 views
0

我知道這裏有一些類似的問題關於DropDownListFor,但都沒有幫助我......如何從ASP.NET MVC2中的DropDownListFor html helper檢索值?

我在實體框架中使用ORM作爲我的項目。有EF模型叫做「Stete」。 Stete在EF模型上有一個名爲「Drustva」的外國人

現在我正在嘗試編輯Stete模型的數據表單。我設法顯示一切,包括Stete.Drustva.Naziv屬性,但我無法在我的處理程序方法[HttpPost]中獲取最後一個屬性。無論我在下拉列表中選擇什麼,它總是返回0。

下面的代碼:

DrustvaController:

public static IEnumerable<SelectListItem> DrustvaToSelectListItemsById(this KnjigaStetnikaEntities pEntities, int Id) 
    { 
     IEnumerable<Drustva> drustva = (from d in pEntities.Drustva 
             select d).ToList(); 
     return drustva.OrderBy(drustvo => drustvo.Naziv).Select(drustvo => new SelectListItem 
     { 
      Text = drustvo.Naziv, 
      Value = drustvo.Id.ToString(), 
      Selected = (drustvo.Id == Id)? true : false 
     }); 
    } 

SteteController:

 private IEnumerable<SelectListItem> privremenaListaDrustava(int Id) 
     { 
     using (var ctx = new KnjigaStetnikaEntities()) 
     { 
      return ctx.DrustvaToSelectListItemsById(Id); 
     } 
    } 

public ActionResult IzmijeniPodatkeStete(Int32 pBrojStete) 
    { 
     PretragaStetaModel psm = new PretragaStetaModel(); 
     ViewData["drustva"] = privremenaListaDrustava(psm.VratiStetuPoBrojuStete(pBrojStete).Drustva.Id); 

     ViewData.Model = new Models.Stete(); 

     return View("EditView", (Stete.Models.Stete)psm.GetSteta(pBrojStete)); 
    } 

EditView中:

 <div class="editor-label"> 
      <%: Html.Label("Društvo") %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.DropDownListFor(m => m.Drustva.Naziv, ViewData["drustva"] as IEnumerable<SelectListItem>) %> 
      <%: Html.ValidationMessageFor(model => model.FKDrustvo) %> 
     </div> 

我不翻譯對象的名稱詮釋遺憾o英語,但他們幾乎沒有適當的翻譯。如果有必要,我可以嘗試創建類似的示例...

回答

0

您是否在視圖標記中包含Html.BeginFormAjax.BeginForm?這是一種常見的疏忽,會導致你所指的行爲。我無法從你粘貼的代碼中看出你的問題。乾杯。

+0

是的,我確實 「<%使用(Html.BeginForm()){%> <%:Html.ValidationSummary(TRUE)%>」 現在是不確定BeginForm,但我也試過指定動作和控制器名稱(不幸的是沒有成功) – Eedoh 2010-04-23 13:05:45