小编sno*_*uet的帖子

如何使用ninject将单个工厂实例注入多个存储库和工作单元?

首先,我有一个已定义的dbcontext工厂,public class DatabaseFactory : Disposable, IDatabaseFactory它只是创建一个上下文(如果尚不存在).

接下来,我有一个通用的存储库,它定义public class Repository<T> : IRepository<T> where T : class了构造函数中的工厂.我有其他具体的存储库继承自这个.

我还有一个工作类单元,它定义public class UnitOfWork : IUnitOfWork了构造函数中的工厂,并将所有更改保存到工厂内的上下文中(所有存储库都应该使用).

在我的控制器中,我将构造函数设置为public ProjectController(IDatabaseFactory factory, IUnitOfWork unitOfWork, IProjectRepository projectRep, IUserRepository userRep).

基本上,我需要将工厂的相同实例传递给工作单元和所有存储库.使用ninject,它为每个对象创建一个新工厂,而不是将单个实例传递给它们.有没有办法只允许单个实例通过ninject传递或我没有正确创建我的工厂和/或没有正确理解ninject?

这是我在ninject中的绑定:

kernel.Bind<IProjectRepository>().To<ProjectRepository>();
kernel.Bind<IIssueRepository>().To<IssueRepository>();
kernel.Bind<IUserRepository>().To<UserRepository>();
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>();
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc ninject

6
推荐指数
1
解决办法
1660
查看次数

使用ASP.NET和MVC 3,如何创建隐藏字段,以便具有数组的List作为列表中每个项的值正确绑定?

我有一个查询语句列表,当需要将另一个语句添加到最后时,需要将其发送回MVC控制器.对于我正在尝试创建的测试,页面以过滤器列表开头.在执行此示例时,页面将为过滤器创建字段,如下所示:

<input id="filters_0__PropertyName" name="filters[0].PropertyName" type="hidden" value="State">
<input id="filters_0__Operator" name="filters[0].Operator" type="hidden" value="=">
<input id="filters_0__Value" name="filters[0].Value" type="hidden" value="CA">
Run Code Online (Sandbox Code Playgroud)

但是当我看到表单实际发回给控制器时,列表会返回:

PropertyName = "State"
Operator = "="
Value= "new string[1]" // The value comes back in the first index of the array
Run Code Online (Sandbox Code Playgroud)

我必须将Value参数转换为数组并获取第一个索引以便能够获取值.这没关系,但并不理想.当FilterField包含Value属性的整数或字符串数​​组时,会出现主要问题.当发生这种情况时,HTML会出现:

<input id="filters_2__PropertyName" name="filters[3].PropertyName" type="hidden" value="Schedule_Num">
<input id="filters_2__Operator" name="filters[3].Operator" type="hidden" value="IN">
<input id="filters_2__Value" name="filters[3].Value" type="hidden" value="System.Int32[]">
Run Code Online (Sandbox Code Playgroud)

然后,该值包含对象类型,根本没有值.所以模型绑定器会混淆,一切都会中断.是否有更简单的方法将此值列表绑定到View?

FilterField.cs:

public class FilterField
{
    public string PropertyName { get; set; }
    public string Operator { get; set; }
    public object Value { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net-mvc razor asp.net-mvc-3

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net-mvc ×2

c# ×2

asp.net-mvc-3 ×1

linq ×1

ninject ×1

razor ×1