我显然仍然缺少有关如何在DropDownList中绑定所选项目的内容。
我在存储库中设置了这样的SelectList:
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。但在视图中,select选项永远不会出现,并且第一次始终显示。
这与我使用int作为选定的参数有什么关系吗?
THX。戴尔
答案 0 :(得分: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?
答案 1 :(得分:0)
我不得不同意LukLed我不确定你在使用语句做什么:(selected == 0 ? 0 : selected)
如果我传入0然后它返回0并且如果我传入0以外的其他东西那么它使用了值。
修改强> 哦......我明白了。改变演员:
<%=Html.DropDownList("AgenciesDonorList", (IEnumerable<SelectListItem>)ViewData["AgenciesDonorList"])%>
要:
<%=Html.DropDownList("AgenciesDonorList", (SelectList)ViewData["AgenciesDonorList"])%>