asp.net-mvc – 如何在ASP.NET MVC 2中使用模型绑定器的DI / IoC容器?
发布时间:2020-05-25 08:22:59 所属栏目:asp.Net 来源:互联网
导读:假设我有一个User实体,我想在构造函数中将它的CreationTime属性设置为DateTime.Now.但作为单元测试采用者,我不想直接访问DateTime.Now,而是使用ITimeProvider: public class User { public User(ITimeProvider timeProvider) { // ... this.Cr
|
假设我有一个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; } }
}
我在我的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) {
// ...
}
}
我还希望能够保留默认模型绑定器的所有功能. 有机会解决这个简单/优雅/等? :d 解决方法怎么样而不是使用ITimeProvider试试这个:public class User
{
public Func<DateTime> DateTimeProvider = () => DateTime.Now;
public User()
{
this.CreationTime = DateTimeProvider();
}
}
在你的单元测试中: var user = new User(); user.DateTimeProvider = () => new DateTime(2010,5,24); 我知道这不是很优雅,但不是弄乱模型绑定器,这可能是一个解决方案.如果这不是一个好的解决方案,您可以实现自定义模型绑定器并覆盖CreateModel方法,您将在模型的构造函数中注入依赖项. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 调用RenderSection两次?
- asp.net-mvc – asp.net mvc授权使用角色
- asp.net – 在iframe中显示PDF
- asp.net – 授权web.config中的属性对授权节点
- asp.net-mvc – ASP.NET MVC现在是“开源”.这是一件好事吗
- asp.net-mvc – 修改ActionFilter中的模型
- .net – .ToTitleCase不适用于所有大写字符串
- asp.net – 在IIS上运行Python和Django
- asp.net – 基于web.config的url重写的绝对最小内容是什么?
- asp.net-mvc – ASP.NET MVC和混合模式认证
