1

我显然仍然缺少有关如何在 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(...) 之前的调试器中,我可以看到选择了正确的项目(真),而其他所有项目都是假的。但是在视图中,选择选项永远不会成功,并且总是显示第一次。

这与我使用 int 作为所选参数有什么关系吗?

谢谢。戴尔

4

2 回答 2

1

Change GetAgencyList to:

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

ad doesn't have to be of type IEnumerable<SelectListItem>. Is AgenciesDonorId Int32?

于 2009-11-03T20:34:07.017 回答
0

我必须同意 LukLed 我不确定你在用这个语句做什么:(selected == 0 ? 0 : selected)如果我传入 0,那么它返回 0,如果我传入 0 以外的东西,那么它使用那个值。

编辑: 哦……我明白了。改变演员阵容:

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

至:

<%=Html.DropDownList("AgenciesDonorList", (SelectList)ViewData["AgenciesDonorList"])%>
于 2009-11-03T20:44:09.007 回答