相关疑难解决方法(0)

如何在ASP.NET MVC 2+中使用带有模型绑定器的DI/IoC容器?

假设我有一个User实体,我想在构造函数中将它的CreationTime属性设置为DateTime.Now.但作为单元测试采用者,我不想直接访问DateTime.Now,而是使用ITimeProvider:

public class User {
    public User(ITimeProvider timeProvider) {
        // ...
        this.CreationTime = timeProvider.Now;
    }

    // .....
}

public interface ITimeProvider { 
    public DateTime Now { get; }
}

public class TimeProvider : ITimeProvider {
    public DateTime Now { get { return DateTime.Now; } }
}
Run Code Online (Sandbox Code Playgroud)

我在我的ASP.NET MVC 2.0应用程序中使用NInject 2.我有一个UserController和两个Create方法(一个用于GET,一个用于POST).用于GET的那个是直接的,但是用于POST的那个不是那么直接而不是那么向前:P因为我需要弄乱模型绑定器告诉它获得ITimeProvider的实现的引用以便能够构造用户实例.

public class UserController : Controller {

    [HttpGet]
    public ViewResult Create() {
         return View();
    }

    [HttpPost]
    public ActionResult Create(User user) {

         // ...

    }
}
Run Code Online (Sandbox Code Playgroud)

我还希望能够保留默认模型绑定器的所有功能.

有机会解决这个简单/优雅/等?:d

asp.net-mvc dependency-injection inversion-of-control model-binding custom-model-binder

8
推荐指数
2
解决办法
3499
查看次数