Sto utilizzando ASP.NET MVC e ADO.NET Entity Framework insieme.Entity Framework con MVC fortemente tipizzato
Desidero fortemente che le mie viste e i controller siano stati digitati in modo corretto.
Ma come faccio a gestire le associazioni di entità?
Ecco un semplice esempio:
una persona ha un reparto. Un dipartimento ha zero o più persone.
mio controllore passa un'istanza di un oggetto Person e una collezione di tutto il Dipartimento di oggetti alla vista.
public class PersonController : Controller
{
...
//
// GET: /Person/Create
public ActionResult Create()
{
Person Model = new Person();
Model.Id = Guid.NewGuid();
ViewData["Departments"] = db.Department;
return View(Model);
}
...
}
La mia vista ha un DropDownList "Dipartimento" con tutti i reparti come opzioni.
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="Id">Id:</label>
<%= Html.TextBox("Id") %>
<%= Html.ValidationMessage("Id", "*") %>
</p>
<p>
<label for="Name">Name:</label>
<%= Html.TextBox("Name") %>
<%= Html.ValidationMessage("Name", "*") %>
</p>
<p>
<label for="Department">Family:</label>
<%= Html.DropDownList("Department", new SelectList((IEnumerable)ViewData["Departments"], "Id", "Name"))%>
<%= Html.ValidationMessage("Department", "*")%>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
Ma, l'oggetto Person inviato al controller ha non Dipartimento e fallisce!
public class PersonController : Controller
{
...
//
// POST: /Person/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Person Model)
{
try
{
db.AddToPerson(Model);
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
...
}
Perché non è il Dipartimento selezionato da DropDownList "Dipartimento", ha aggiunto automaticamente alla Persona modello?
Come utilizzare ADO.NET Entity Framework e ASP.NET MVC con viste e controller fortemente tipizzati?
http://stackoverflow.com/questions/922402/strongly-typed-asp-net-mvc-with -ado-net-entity-framework –