MVC模型绑定到接口

时间:2010-06-11 14:25:20

标签: c# asp.net-mvc-2 interface dependency-injection model-binding

我创建了一个类似

OrderFormViewModel
public class OrderFormViewModel 
{
    public IOrderDetails { get; set; }
    public IDeliveryDetails { get; set; }
    public IPaymentDetails { get; set; }
    // ... etc

    public SelectList DropDownOptions { get; set; }
    // ... etc

}

这将转到我的创建视图,其中每个部分(即投放详细信息,付款详细信息等)随后会传递到捕获必要字段的部分视图。

我认为这一切都非常整洁,直到我运行它并且当然意识到MVC模型绑定器不知道如何实例化任何接口。

有没有办法以某种方式解决这个问题?

我也在尝试使用Unity容器学习DI,所以我试图避免在我的UI项目中引用任何具体的类(模型在一个单独的项目中)。

2 个答案:

答案 0 :(得分:6)

一种解决方案是制作自定义模型装订器,但此路径意味着您需要完成将表单元素转换为对象属性的工作。但是,您可以完全控制IOrderDetails的实现,例如,或者您可以让DI使用它的配置为您提供正确的具体类型。

答案 1 :(得分:2)

可能的解决方案可能在此处(在接口绑定过滤器与视图模型绑定下): http://codetunnel.com/aspnet-mvc-model-binding-security/