我想从类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; }
}
我可以从下拉列表中毫无问题地获得Tramite
和Solicitante
,但是Funcionario
里面有另一个对象(Grupo
),但是我没有仅仅从Funcionario
的密钥知道如何从数据库中获取它:
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);
}