Если у меня есть следующее строго типизированное представление:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<XXX.DomainModel.Core.Locations.Location>" %>
Где Местоположение - абстрактный класс.
И у меня есть следующий контроллер, который принимает сильно типизированную модель с помощью POST:
[HttpPost]
public ActionResult Index(Location model)
Я получаю ошибку времени выполнения, указывающую "Невозможно создать абстрактный класс
Что, конечно, имеет смысл. Однако - я не уверен, какое лучшее решение здесь.
У меня много конкретных типов (около 8), и это представление, в котором вы можете редактировать свойства абстрактного класса.
Что мне пытались делать, это создавать перегрузки для всех разных конкретных типов и выполнять мою логику в общем методе.
[HttpPost]
public ActionResult Index(City model)
{
UpdateLocationModel(model);
return View(model);
}
[HttpPost]
public ActionResult Index(State model)
{
UpdateLocationModel(model);
return View(model);
}
и т.д.
И затем:
[NonAction]
private void UpdateLocationModel (Location model)
{
// ..snip - update model
}
Но это не работает ни, MVC жалуется, что методы действия неоднозначны (также имеет смысл).
Что нам делать? Можем ли мы просто не привязываться к абстрактной модели?