se ho la seguente vista fortemente tipizzato:ASP.NET MVC 2 - il legame con Estratto modello
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<XXX.DomainModel.Core.Locations.Location>" %>
Dove posizione è una classe astratta.
e ho il seguente controller, che accetta un modello fortemente tipizzato tramite una POST:
[HttpPost]
public ActionResult Index(Location model)
ottengo un errore di runtime che indica "Impossibile creare classe astratta
Quale di Ovviamente, non sono sicuro di quale sia la soluzione migliore:
Ho molti tipi di calcestruzzo (circa 8), e questa è una vista in cui c una sola proprietà di modifica della classe astratta.
Quello che ho provato è creare sovraccarichi per tutti i diversi tipi di calcestruzzo ed eseguire la mia logica in un metodo comune.
[HttpPost]
public ActionResult Index(City model)
{
UpdateLocationModel(model);
return View(model);
}
[HttpPost]
public ActionResult Index(State model)
{
UpdateLocationModel(model);
return View(model);
}
etc etc
E poi:
[NonAction]
private void UpdateLocationModel (Location model)
{
// ..snip - update model
}
Ma questo non funziona neanche, MVC lamenta i metodi di azione sono ambigui (anche senso).
Cosa facciamo? Possiamo semplicemente non legarci a un modello astratto?
Buona domanda. Interessato a vedere le risposte! –
Sono curioso di sapere se hai mai trovato un modo migliore di gestirlo? –
@Mystere Man - no. Non ho dovuto farlo di nuovo. Se lo facessi, farei ciò che la risposta accettata suggerisce. – RPM1984