Я хочу передать один из нескольких классов, которые реализуют интерфейс из моего представления обратно в действие моего контроллера.Я использую ActionLink в своем представлении, передавая экземпляр своему действию, но он, естественно, завершается неудачей, потому что MVC не может работать с интерфейсами через привязку модели по умолчанию.
Итак:
<%=Html.ActionLink(flow.Source.Name, "Get", new {container=flow.Source})%>
находится в цикле, и каждый поток. Источник соответствует IContainer.
public class Flow
{
public virtual IContainer Source { get; private set; }
}
public interface IContainer
{
//members here
}
public class File : IContainer
{}
public class Worksheet : IContainer
{}
В основном я хочу вызвать метод действия:
public ActionResult Get(IContainer container)
{
// Do something
}
Причина в том, что мне нужно получить состояние текущего контейнера, переданного моему методу действия, из базы данных.Я использую NHibernate, и у меня есть сущности, сопоставленные с таблицей для каждой сущности, поэтому у меня есть одна для Файла и одна для Рабочего листа, например, поэтому мне нужно решить, какой класс доступа к данным использовать.Есть смысл?Вероятно, нет!
Можно ли это сделать, не двигаясь к контейнеру базового класса?Могу ли я придерживаться интерфейса, переданного моему методу действия, и разрешить экземпляр подтипа, переданный вместо интерфейса?
Любая помощь с этим будет с благодарностью.