Я понимаю, что ASP.NET MVC позволяет только POST-объектам выполнять действия в контроллере, где аргументы Action принимают размещенный объект как класс Concrete.ASP.NET MVC Проводка моделей к действию с интерфейсом
Есть ли способ обойти это, или хорошая альтернатива?
В моем случае, у меня есть действие, которое принимает интерфейс в качестве аргумента:
public ActionResult SaveAdjustment(IModel model)
{
switch (model.SubsetType)
{
// factory like usage
}
}
И для этого действия, у меня есть многочисленные взгляды, все сильно типизированных к объектам, реализующим IModel, все, что я хочу чтобы иметь возможность опубликовать этот метод.
Конечно, бег это дает мне ошибку:
Cannot create an instance of an interface
Есть ли хорошая работа вокруг этого? Или мне нужно создать метод Action для каждого и отправить их методу, подобному этому?
Спасибо за совет. Забавно, что вы упоминаете, как действия должны быть тонкими, так как именно поэтому я помещаю это здесь, так как в настоящее время существует много действий, выполняющих 100 строк строк кода операции. Я беру это и ставил его в службу, как вы предлагаете, и я оставил очень простые действия, которые все работают одинаково (только с разными моделями). На данный момент я продолжил создание Action для каждого конкретного класса, чтобы все они запустили мой абстрактный заводский метод. Теперь перед новой проблемой, где размещенный объект имеет значение null ... :( – Arkiliknam