使用DropdownListFor忽略“;选择“;值I';We set in the model

本文关键字:set We in model the 忽略 DropdownListFor 选择 使用 | 更新日期: 2023-09-27 18:23:44

这是控制器代码:

EfCategoriaRepository efCategoriaRepository = new EfCategoriaRepository();
model.Categoria= new List<SelectListItem>();
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<SelectListItem> 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>

有人知道为什么尽管我在正确的值上设置了"selected"为true,但没有选择正确的下拉值吗?

使用DropdownListFor忽略“;选择“;值I';We set in the model

尝试

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;