加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – MVC3,Ninject和Ninject.MVC3问题

发布时间:2020-12-16 00:01:34 所属栏目:asp.Net 来源:网络整理
导读:我刚开始使用Ninject和MVC3,所以这是我的问题: – 我从Nuget安装了Ninject 2.2.1.4和Ninject.MVC3 2.2.2.0 – 在我的WebUI(MVC3项目)中: 的Global.asax.cs public class MvcApplication : NinjectHttpApplication{ public static void RegisterGlobalFilte
我刚开始使用Ninject和MVC3,所以这是我的问题:
– 我从Nuget安装了Ninject 2.2.1.4和Ninject.MVC3 2.2.2.0
– 在我的WebUI(MVC3项目)中:

的Global.asax.cs

public class MvcApplication : NinjectHttpApplication
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",// Route name
            "{controller}/{action}/{id}",// URL with parameters
            new { controller = "home",action = "index",id = UrlParameter.Optional } // Parameter defaults
        );

    }

    protected override void OnApplicationStarted()
    {
        base.OnApplicationStarted();

        AreaRegistration.RegisterAllAreas();
        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }

    protected override IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        kernel.Load(Assembly.GetExecutingAssembly());
        return kernel;
    }


}

>在我的域(类项目)中,我有我的LinQ to SQL datacontext,我想从我的WebUI中的Web.Config加载带有连接字符串的上下文,所以我必须传递构造函数参数,我也有一些服务在我的域项目中

public class LotteryDataService
{
    LinQ.WebDataContext _context;

    public LotteryDataService(LinQ.WebDataContext context)
    {
        _context = context;
    }

    public IEnumerable<LinQ.LotteryData> Get()
    {
        return _context.LotteryDatas.Take(10);
    }
}

如何将datacontext与Ninject绑定到构造函数参数(这里是连接字符串)?

解决方法

这是传递构造函数参数的方法. Ninject将解析与指定的构造函数参数匹配的构造函数.
public class DataModule : NinjectModule
{
    public override void Load()
    {
        string connectionString = "...";
        Bind<WebDataContext>().ToSelf()
            .WithConstructorArgument("connection",connectionString);
    }
}

.WithConstructorArgument()的第一个参数应该是构造函数参数的名称.这是基类中的fileOrServerOrConnection,但是派生类中的连接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读