我创建了一个类似
的 OrderFormViewModelpublic 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项目中引用任何具体的类(模型在一个单独的项目中)。
答案 0 :(得分:6)
一种解决方案是制作自定义模型装订器,但此路径意味着您需要完成将表单元素转换为对象属性的工作。但是,您可以完全控制IOrderDetails的实现,例如,或者您可以让DI使用它的配置为您提供正确的具体类型。
答案 1 :(得分:2)
可能的解决方案可能在此处(在接口绑定过滤器与视图模型绑定下): http://codetunnel.com/aspnet-mvc-model-binding-security/