前言

Ninject是一款开源的轻量级的依赖注入插件。从接触ioc以来,一直都是使用这个,感觉用起来还是不错的,配置起来也很方便简单。在mvc中更是基本傻瓜式的配置。

开发前的准备

  1. 新建一个mvc3项目。
  2. 安装Ninject.mvc3. 这个产检是ninject在mvc3中的一个扩展。可以直接在nuget中安装。如下图:

搜索出来以后,点击安装到自己的相应的项目层即可(我这里只有一层,所以就直接安装到网站根目录下),这样项目中就会出现一个文件夹App_Start下面有一个cs文件,是ninject.mvc3这个插件为我写好的ioc类。

这样我们就配置好了环境,可以开始依赖注入的开发了。

开发

  1. 新建一个接口类ITest:
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5
6 namespace MvcIoc.Interface
7 {
8 public interface ITest
9 {
10 string GetMsg(string str);
11
12 }
13 }

  2.再新建一个类Test,实现ITest接口

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using MvcIoc.Interface;
6
7 namespace MvcIoc.Concrete
8 {
9 public class Test:ITest
10 {
11 public string GetMsg(string str)
12 {
13 return "依赖注入测试消息:" + str;
14 }
15 }
16 }

3.打开我们安装Ninject.mvc3的时候App_Start下自动创建的cs类。在代码中将Itest和Test绑定。代码如下:

[assembly: WebActivator.PreApplicationStartMethod(typeof(MvcIoc.App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(MvcIoc.App_Start.NinjectWebCommon), "Stop")] namespace MvcIoc.App_Start
{
using System;
using System.Web; using Microsoft.Web.Infrastructure.DynamicModuleHelper; using Ninject;
using Ninject.Web.Common;
using MvcIoc.Interface;
using MvcIoc.Concrete;
public static class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper(); /// <summary>
/// Starts the application
/// </summary>
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
} /// <summary>
/// Stops the application.
/// </summary>
public static void Stop()
{
bootstrapper.ShutDown();
} /// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>(); RegisterServices(kernel);
return kernel;
} /// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
//所有接口和实现类的绑定都在写在此处
kernel.Bind<ITest>().To<Test>();
}
}
}

这样我们就将一个接口和一个实现改接口的类绑定在一起了。

4.新建一个HomeController,然后写一个Index的action,并创建index的视图。并在构造器中给接口Itest初始化一个对象。

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.Mvc;
6 using MvcIoc.Interface;
7 namespace MvcIoc.Controllers
8 {
9 public class HomeController : Controller
10 {
11 //
12 // GET: /Home/
13
14 public ITest test;//定义要调用的接口在构造器初始化。
15 public HomeController(ITest test)
16 {
17 this.test = test;
18 }
19
20 public ActionResult Index()
21 {
22 ViewBag.test = test.GetMsg("测试成功");
23 return View();
24 }
25
26 }
27 }

然后视图代码:在页面上显示调用的GetMsg返回的消息。

1 @{
2 ViewBag.Title = "Index";
3 }
4
5 <h2>Index</h2>
6 @ViewBag.test

5.这样一个依赖注入的项目就完成了,运行代码。结果如下:

项目代码

点此下载

Ninject在mvc中的简单配置的更多相关文章

  1. SpringSecurity 在MVC 中的简单使用(翻译的,稍加改动)

    Spring Security允许开发人员轻松地将安全功能集成到J2EE Web应用程序中,它通过Servlet过滤器实现“用户自定义”安全检查. 在本教程中,我们将向您展示如何在Spring MVC ...

  2. 在ASP.NET Core MVC中构建简单 Web Api

    Getting Started 在 ASP.NET Core MVC 框架中,ASP.NET 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 ...

  3. axios在vue中的简单配置与使用

    一.axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:https://hzzly.github.io/2017/03/12/ ...

  4. asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

    摘要:上篇写了如何搭建一个简单项目框架的上部分,讲了关于Dal和Bll之间解耦的相关知识,这篇来把后i面的部分说一说. 上篇讲到DbSession,现在接着往下讲. 首先,还是把一些类似的操作完善一下 ...

  5. log4net在Asp.net Mvc中的应用配置与介绍

    log4net在.NET中的地位就不多言语了,此篇文章着重配置.较少介绍使用.因为在网上你可以在网上搜到几十万的文章告诉你怎么用.安装的话也不废话了,很简单.Nuget里搜索一下"log4n ...

  6. spring MVC中Dubbo的配置

    1.服务提供方的bubbo配置: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=& ...

  7. spring mvc中拦截器配置mvc:interceptors

    其实在mvc:interceptors标签中,有两种类型的配置,一种直接配置一个bean(bean和ref归为一类),另一种还要配置上拦截的路径和排除的路径.直接配置的bean那就代表对所有的请求进行 ...

  8. spring mvc 中web.xml配置信息解释

    在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...

  9. spring mvc 中 controller 路径配置

    下图中,由于红色部分(value="/")的存在,导致 host:port/项目/dimlist 无法被映射到dimList方法,解决办法是将其去掉. package cn.bgo ...

随机推荐

  1. Python快速教程

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容 ...

  2. bootstrap-按钮组、字体图标

    字体图标: <div class="container"> <div class="row"> <span class=" ...

  3. 4个理由告诉你Java为何排行第一

    Java已经有20年的历史了,甚至更久,而这取决于你所询问的人和你的计算方式.忽略它的年龄不看,Java依然排行第一.它的实用性.性能和向后兼容性都彰显其价值所在.2016年伊始,标志着我们已经走过了 ...

  4. linux shell 参数传递

    在shell编程时.可以使用参数.Shell有位置参数和内部参数 1. 位置参数 由系统提供的参数称为位置参数.位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linu ...

  5. 92、App Permissions(权限管理)实例

    •Manifest权限声明 •Permission Groups-权限组 •权限的区分-安装时授权于运行时授权 •撤销权限 •检查.请求权限 •在应用中如何合理的处理权限请求逻辑   在Android ...

  6. struts (七) 域模型

    1.域模型获取参数 domain Model 2. vo  value object  值对象 do  data object 数据对象 dto data transfer object  数据传输对 ...

  7. eclipse导入myeclipse的web项目

    1.import> 2.进入项目目录,找到.project文件,打开 3.找到<natures> ...</natures>代码段,添加如下标签内容并保存 <nat ...

  8. python 之编码问题详解

    前在一个项目中遇到用post提交一个xml,xml中含有中文,对于单独的py文件,使用urllib2.urlopen完全ok,但在django中使用就一直报编码错误,然后在网上看到这篇文章不错,决定m ...

  9. POJ - 1159 Palindrome(dp-回文变形)

    d.求对字符串最少添加几个字符可变为回文串. s. 法1:直接对它和它的逆序串求最长公共子序列长度len.N-len即为所求.(N为串长度) 因为,要求最少添加几个字符,我们可以先从原串中找到一个最长 ...

  10. [ZOJ 1006] Do the Untwist (模拟实现解密)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6 题目大意:给你加密方式,请你求出解密. 直接逆运算搞,用到同余定理 ...