私がモデルに設定した "選択された"値を無視してDropdownListForを使う

コントローラコードは次のとおりです。

EfCategoriaRepository efCategoriaRepository = new EfCategoriaRepository();
model.Categoria= new List();

foreach (var categoria in efCategoriaRepository.FindAllCategorias())
{
    model.Categoria.Add(new SelectListItem {
        Text = categoria.Nombre, 
        Value = categoria.CategoriaId.ToString(), 
        Selected = producto.CategoriaId == categoria.CategoriaId
    });
}

デバッガを使用して、正しい値が "Selected = True"に設定されていることを確認できます。

私のモデル:

public class ProductoModel
{
    public int ProductoId { get; set; }

    public int CategoriaId { get; set; }
    public List Categoria { get; set; }

    [Required]
    public string Nombre { get; set; }

    [Required]
    public string Titulo { get; set; }

    [Required]
    [AllowHtml]
    public string Descripcion { get; set; }

    [Required]
    [AllowHtml]
    public string Caracteristicas { get; set; }

    [Required]
    [DisplayName("Precio - Categoria 1")]
    public decimal PrecioCatUno { get; set; }

    [Required]
    [DisplayName("Precio - Categoria 2")]
    public decimal PrecioCatDos { get; set; }

    [Required]
    [DisplayName("Precio - Categoria 3")]
    public decimal PrecioCatTres { get; set; }
}

私のエディタテンプレート:

<div class="input-field">
    @Html.LabelFor(m => m.Categoria)
    @Html.DropDownListFor(model => model.CategoriaId, Model.Categoria)
</div>

正しい値で「選択済み」をtrueに設定したにもかかわらず、正しいドロップダウン値が選択されていない理由を知っている人は誰ですか?

0
あなたのモデルはどのように見えるのですか?
追加された 著者 Rafay,
@ 3nigma:で編集しました。
追加された 著者 Only Bolivian Here,
ページ上に生成されたHTMLはどのように見えますか?
追加された 著者 David C,

1 答え

お試しください

EfCategoriaRepository efCategoriaRepository = new EfCategoriaRepository();
model.Categoria= efCategoriaRepository.FindAllCategorias().Select(x=>new SelectListItem{
                Value=x.CategoriaId.ToString(), 
                Text = x.categoria.Nombre
           }).ToList();


    model.CategoriaId= producto.CategoriaId;    
0
追加された