0

私の DropDownListFor は、選択したアイテムをバインドしません。

これは正しいモデルです:

public class DeliveryOrderModel
{
    public BoxInfo Boxes { get; set; }

    public class BoxInfo
    {
        public long? CountryID { get; set; }
        public IEnumerable<SelectListItem> Countries { get; set; }
    }
}

そして、このモデルの問題では:

public class DeliveryOrderModel
{
    public List<BoxInfo> Boxes { get; set; }

    public class BoxInfo
    {
        public long? CountryID { get; set; }
        public IEnumerable<SelectListItem> Countries { get; set; }
    }
}

これはSelectItemsです

var Countries = new SelectList(new[] 
{   
    new { CountryID = 1, Text = "Name1" }, 
    new { CountryID = 2, Text = "Name2" }, 
    new { CountryID = 3, Text = "Name3" } 
} ,"CountryID","Text");

このドロップダウンは最初のモデルで機能します:

Html.DropDownListFor(model => model.Boxes.CountryID, Model.Boxes.Countries)

そして、これはトラブルドロップダウンです:

Html.DropDownListFor(model => model.Boxes[0].CountryID, Model.Boxes[0].Countries)
4

1 に答える 1

0

最初の考え-SelectListは配列ではなくコレクションであるため、次のようなものが必要になる場合があります。

Html.DropDownListFor(model => model.Boxes.First().CountryID,
    Model.Boxes.First().Countries)

また、のためのlamda表現が必要な場合があります.First

添加

モデルは次のようになります

public class DeliveryOrderModel
 {
 public List<BoxInfo> Boxes { get; set; }

 public class BoxInfo
 {
     publix Box myBox  { get; set; }
     public long? CountryID { get; set; }        
 }
}

CountryListは、独立した独立したSelectListViewModelになります。そして最後にビュー

    Html.DropDownListFor(model => model.Boxes[0].CountryID, Countries)

または、ForEachを使用してボックスを反復処理するか、または...

わかった?

于 2012-11-14T12:03:47.933 に答える