2009-11-03 44 views
1

我顯然仍然缺少一些關於如何綁定DropDownList中的選定項。DropDownList項未選中

我設置這樣選擇列表的一個庫:

public SelectList GetAgencyList(System.Guid donorId, Int32 selected) 
    { 
     AgenciesDonorRepository adRepo = new AgenciesDonorRepository(); 
     List<AgenciesDonor> agencyDonors = adRepo.FindByDonorId(donorId); 

     IEnumerable<SelectListItem> ad = from a in agencyDonors 
       select new SelectListItem { 
       Text = a.Agencies.AgencyName, 
       Value = a.AgenciesDonorId.ToString() 
       }; 

     return(new SelectList(ad, "Value", "Text", (selected == 0 ? 0 : selected))); 
    } 

然後在控制器中,這樣的:

  ViewData["AgenciesDonorList"] = repo.GetAgencyList(donorId, ccResult.AgenciesDonors.AgenciesDonorId); 
      return View(ccResult); 

並在視圖,這樣的:

<%=Html.DropDownList("AgenciesDonorList", (IEnumerable<SelectListItem>)ViewData["AgenciesDonorList"])%> 

在返回View(...)之前的調試器中,我可以看到正確的項目被選中(true),而其他的都是false。但在視圖中,選擇選項永遠不會生效,並且始終顯示第一次。

這與我使用int作爲選定的參數有什麼關係嗎?

Thx。戴爾

+0

在什麼... ASP? – Greg 2009-11-03 19:59:02

+0

ASP.net MVC 1.0 – Dale 2009-11-03 20:40:10

回答

1

更改GetAgencyList到:

public SelectList GetAgencyList(System.Guid donorId, Int32 selected) 
{ 
    AgenciesDonorRepository adRepo = new AgenciesDonorRepository(); 
    List<AgenciesDonor> agencyDonors = adRepo.FindByDonorId(donorId); 

    var ad = from a in agencyDonors 
      select new { 
      Text = a.Agencies.AgencyName, 
      Value = a.AgenciesDonorId 
      }; 

    return(new SelectList(ad, "Value", "Text", selected)); 
} 

廣告並不一定是IEnumerable<SelectListItem>類型。 AgenciesDonorId Int32?

+0

Thx。這似乎有所幫助。還將DropDownList View方法中的第一個參數更改爲'AgenciesDonorId'而不是AgenciesDonorList。它們一起工作。 – Dale 2009-11-03 20:44:21

+0

是的。 「AgenciesDonorId」是正在編輯的表單字段的名稱。正如J.13.L所說,將ViewData [「AgenciesDonorList」]轉換爲IQueryable 應替換爲,因爲您提供了SelectList :) – LukLed 2009-11-03 20:49:48

0

我不得不同意LukLed我不確定你在做什麼聲明:(selected == 0 ? 0 : selected)如果我傳入一個0,那麼它返回0,如果我傳入0以外的值,那麼它使用該值。

編輯: 哦......我明白了。更改投:

<%=Html.DropDownList("AgenciesDonorList", (IEnumerable<SelectListItem>)ViewData["AgenciesDonorList"])%> 

要:

<%=Html.DropDownList("AgenciesDonorList", (SelectList)ViewData["AgenciesDonorList"])%> 
+0

啊是的,最後幾個小問題。謝謝。 – Dale 2009-11-03 21:03:15