Model view controller MVC-作为控制器动作参数的接口

Model view controller MVC-作为控制器动作参数的接口,model-view-controller,interface,methods,parameters,action,Model View Controller,Interface,Methods,Parameters,Action,我想将实现接口的许多类中的一个类从我的视图传递回我的控制器操作。我在视图中使用ActionLink将实例传递给我的操作,但它自然会失败,因为MVC无法通过默认模型绑定处理接口 因此: 基本上我想调用一个动作方法: public ActionResult Get(IContainer container) { // Do something } 原因是我需要从数据库中检索传递给action方法的当前容器的状态。我使用NHibernate,每个实体在一个表上映射实体,例如,一个用于文件,一个

我想将实现接口的许多类中的一个类从我的视图传递回我的控制器操作。我在视图中使用ActionLink将实例传递给我的操作,但它自然会失败,因为MVC无法通过默认模型绑定处理接口

因此:

基本上我想调用一个动作方法:

public ActionResult Get(IContainer container)
{
   // Do something
}
原因是我需要从数据库中检索传递给action方法的当前容器的状态。我使用NHibernate,每个实体在一个表上映射实体,例如,一个用于文件,一个用于工作表,所以需要能够决定使用哪个数据访问类。有道理?可能不会

这可以在不使用基类容器的情况下完成吗?我是否可以继续使用传递给action方法的接口,并解析传递给接口的子类型实例


在此方面的任何帮助都将不胜感激。

当您调用类时,接口需要“一些”具体的实现来参考。我想从你的帖子来看,你已经意识到了这一点:) 说到这里,这里有一种“有点”的方法,您只需创建自己的模型绑定器,它必须知道(或如何)映射到并创建具体类型(直接或通过依赖项注入)

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
}