6

我创建了一个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 项目中引用任何具体的类(模型在一个单独的项目中)。

4

2 回答 2

6

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

于 2010-06-11T15:23:01.100 回答
2

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

于 2011-10-27T10:24:54.103 回答