tengo estas clases que se asigna utilizando entidad Código Marco: PrimeraASP.NET MVC 3 Uno-A-Muchos Formulario
public class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
//... additional properties
[Required]
public virtual ICollection<Address> Addresses { get; set; }
}
public class Address
{
public int AddressId { get; set; }
public string Street { get; set; }
//... additional properties
public int PersonId { get; set; }
public virtual Person Person { get; set; }
}
Por lo tanto, el uso de ASP.NET MVC 3, ¿cómo puedo realizar la vista de edición para que la persona complete todas las propiedades de una persona dentro de una dirección en un solo formulario?
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Person</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Adresses.FirstOrDefault().Street)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Adresses.FirstOrDefault().Street)
@Html.ValidationMessageFor(model => model.Adresses.FirstOrDefault().Street)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Esto funciona bien para mostrar las entradas con la calle de la base de datos, pero cuando lo hago la presente, el cambio doesnt calle.
[HttpPost]
public ActionResult Edit(int id, FormCollection formCollection)
{
Person person = unityOfWork.PersonRepository.GetById(id);
UpdateModel<Person>(person);
if (ModelState.IsValid)
{
unityOfWork.PersonRepository.Update(person);
unityOfWork.SaveChanges();
return RedirectToAction("Index");
}
return View(person);
}