首页 > 解决方案 > 实体框架:从下拉列表 id 中获取我的类中的对象

问题描述

我想从类中创建一个对象Expediente

public class Expediente
{
    //Para que sea key y no genere identity la BD 
    [Key]
    public int Codigo { get; set; }

    [Required]
    public Tramite Tramite { get; set; }

    //no le pongo requiered para que no de error al crearlo sin esto
    public DateTime FechaCreacion { get; set; }

    //por defecto hay que ponerlo en true
    public Boolean abierto { get; set; }

    [Required]
    public Funcionario Funcionario { get; set; }

    [Required]
    public Solicitante Solicitante { get; set; }

    public virtual ICollection<EtapaCumplida> etapasCumplidas { get; set; }

}

我可以毫无问题地从下拉列表中获取Tramiteand ,但是其中有另一个对象(SolicitanteFuncionarioGrupoFuncionario

public class Funcionario
{
        //Indicar que se trata de una dirección de mail para que realice automáticamente la validación
        //Cambiar el nombre que se desplegará en el formulario
        [Key]
        [DisplayName("Email Funcionario")]
        [EmailAddress]
        public string Email { get; set; }

        //Varias validaciones
        [Required(ErrorMessage = "La contraseña no se puede dejar vacía")]
        [DataType(DataType.Password)]
        [MinLength(3, ErrorMessage = "Largo mínimo de la contraseña: 3"),
        MaxLength(12, ErrorMessage = "Largo máximo de la contraseña:12")]
        public string Contrasenia { get; set; }

        [Required(ErrorMessage = "El nombre no se puede dejar vacío")]
        //Cambiar el nombre que se desplegará en el formulario
        [DisplayName("Nombre Funcionario")]
        //Indicar largo maximo y minimo
        [StringLength(20, MinimumLength = 3)]
        public string Nombre { get; set; }

        [Required]
        public Grupo Grupo { get; set; }
}

有任何想法吗?

这是我填充下拉列表的代码

     public ExpedienteCrearViewModel (Expediente expediente , List<Tramite> listTramites, List<Funcionario> listFuncionario)
        {
            this.Expediente = expediente;

            //el primer campo es el valor que va a tomar, y el segundo lo que muestra
            this.Trsmites = new SelectList(listTramites, "Codigo", "Titulo");

            this.Funcionarios = new SelectList(listFuncionario, "Email", "Nombre");
        }

这是Expediente上create方法的代码

 public ActionResult Create(ExpedienteCrearViewModel vm)
            {

                if (ModelState.IsValid)
                {
                    Expediente ex = new Expediente();

                    ex.Tramite = db.Tramite.Find(vm.idTramite);
                    ex.Solicitante = (Solicitante)Session["solicitante"];
                    ex.abierto = true;
                    ex.FechaCreacion = DateTime.Now;
                    db.Expediente.Add(ex);
                    db.SaveChanges();
                    vm.Trsmites = new SelectList(db.Tramite.ToList(), "Codigo", "Titulo");
                    vm.Funcionarios = new SelectList(db.Funcionario.ToList(), "Email", "Nombre");
                }

                return View(vm);
            }

标签: entity-framework

解决方案


推荐阅读