2009-11-03 87 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