Если у меня есть следующее строго типизированное представление:
<%@ 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 жалуется, что методы действий неоднозначны (также имеет смысл).
Чтомы делаем? Можем ли мы просто не привязываться к абстрактной модели?