微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MVC-接口作为控制器动作参数

如何解决MVC-接口作为控制器动作参数

| 我想将实现接口的许多类之一从我的视图传递回控制器动作。我在视图中使用了一个ActionLink,将实例传递给我的动作,但由于MVC无法通过认模型绑定处理接口,因此自然会失败。 因此:
<%=Html.ActionLink(flow.source.Name,\"Get\",new {container=flow.source})%>
处于循环中,每个流.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,并且每个实体的表上都映射有实体,例如,对于文件来说有一个,对于工作表来说有一个,因此需要能够决定使用哪个数据访问类。合理?可能不会! 是否可以在不使用基类容器的情况下完成此操作?我可以坚持将接口传递给我的操作方法,并解决代替接口传递的子类型实例吗? 任何帮助,将不胜感激。     

解决方法

当调用类时,接口需要“某些”具体实现来引用。我认为从您的帖子来看,您知道这一点:) 话虽如此,这里处理的方法很“简单”,您只需创建自己的模型绑定程序,该绑定程序必须了解(或如何)映射到并创建具体类型(直接或通过依赖项注入) ASP.NET MVC-接口类型上的自定义模型活页夹     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。