Sto cercando di ottenere un po 'di lavoro vincolante nella mia applicazione mvc. Trovo che le proprietà nidificate non vengano automaticamente associate dal raccoglitore modello predefinito nella versione RC1 di asp.net mvc. Ho la seguente struttura di classe:Associazione del modello di proprietà nidificate in asp.net mvc
public class Contact{
public int Id { get; set; }
public Name Name { get; set; }
public string Email { get; set; }
}
Dove Name
è definito come:
public class Name{
public string Forename { get; set; }
public string Surname { get; set; }
}
mio visualizzazione è definita lungo le linee di:
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");
}
è definita mia azione controller come:
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 proprietà Email
è vincolata correttamente ma non le proprietà Name.Forename
o Name.Surname
. Qualcuno può dire se questo dovrebbe funzionare usando il modello predefinito di default e sto facendo qualcosa di sbagliato o se non funziona e ho bisogno di rollare il mio codice per legare le proprietà annidate sugli oggetti del modello?
Questo funziona benissimo, grazie tvanfosson. –
SingleOrDefault può essere chiamato direttamente con un'espressione lamda –
@PhilippM hai assolutamente ragione, aggiornato! – tvanfosson