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"])%>

return View(...) の直前のデバッガーでは、適切な項目が選択され (true)、他のすべてが false であることがわかります。しかし、ビューでは、選択オプションは決して成功せず、最初は常に表示されます。

これは、選択したパラメーターとして int を使用することと関係がありますか?

どうも。デール

4

2 に答える 2

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

ad はタイプである必要はありませんIEnumerable<SelectListItem>。AgenciesDonorId は Int32 ですか?

于 2009-11-03T20:34:07.017 に答える
0

私はLukLedに同意する必要があります.あなたがステートメントで何をしているのかわかりません.0(selected == 0 ? 0 : selected)を渡すと0が返され、0以外のものを渡すとその値が使用されます.

編集: ああ...わかりました。キャストを変更します。

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

に:

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