Estoy queriendo obtener un trabajo vinculante en mi aplicación mvc. Encuentro que las propiedades anidadas no están automáticamente vinculadas por la carpeta de modelo predeterminada en la versión RC1 de asp.net mvc. Tengo la siguiente estructura de clases:Encuadernación de modelo de propiedades anidadas en asp.net mvc
public class Contact{
public int Id { get; set; }
public Name Name { get; set; }
public string Email { get; set; }
}
Dónde Name
se define como:
public class Name{
public string Forename { get; set; }
public string Surname { get; set; }
}
Mi vista se define a lo largo de las líneas de:
using(Html.BeginForm()){
Html.Textbox("Name.Forename", Model.Name.Forename);
Html.Textbox("Name.Surname", Model.Name.Surname);
Html.Textbox("Email", Model.Email);
Html.SubmitButton("save", "Save");
}
Mi acción del controlador se define como:
public ActionResult Save(int id, FormCollection submittedValues){
Contact contact = get contact from database;
UpdateModel(contact, submittedValues.ToValueProvider());
//at this point the Name property has not been successfully populated using the default model binder!!!
}
La propiedad Email
está vinculada correctamente, pero no las propiedades Name.Forename
o Name.Surname
. ¿Alguien puede decir si esto debería funcionar usando el archivador de modelo predeterminado y estoy haciendo algo mal o si no funciona y tengo que rodar mi propio código para enlazar propiedades anidadas en objetos de modelo?
Esto funciona genial, gracias tvanfosson. –
SingleOrDefault se puede llamar directamente con una expresión lamda –
@PhilippM tienes toda la razón, ¡actualizado! – tvanfosson