【问题标题】:MVC model binding to interfacesMVC 模型绑定到接口
【发布时间】:2011-03-02 16:50:40
【问题描述】:

我创建了一个类似于

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

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

}

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

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

有没有办法解决这个问题?

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这是一篇有趣的博文。这是一个很好的想法,但当然也很聪明。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多