Ninject在mvc中的简单配置
前言
Ninject是一款开源的轻量级的依赖注入插件。从接触ioc以来,一直都是使用这个,感觉用起来还是不错的,配置起来也很方便简单。在mvc中更是基本傻瓜式的配置。
开发前的准备
- 新建一个mvc3项目。
- 安装Ninject.mvc3. 这个产检是ninject在mvc3中的一个扩展。可以直接在nuget中安装。如下图:

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

这样我们就配置好了环境,可以开始依赖注入的开发了。
开发
- 新建一个接口类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中的简单配置的更多相关文章
- SpringSecurity 在MVC 中的简单使用(翻译的,稍加改动)
Spring Security允许开发人员轻松地将安全功能集成到J2EE Web应用程序中,它通过Servlet过滤器实现“用户自定义”安全检查. 在本教程中,我们将向您展示如何在Spring MVC ...
- 在ASP.NET Core MVC中构建简单 Web Api
Getting Started 在 ASP.NET Core MVC 框架中,ASP.NET 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 ...
- axios在vue中的简单配置与使用
一.axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:https://hzzly.github.io/2017/03/12/ ...
- asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用
摘要:上篇写了如何搭建一个简单项目框架的上部分,讲了关于Dal和Bll之间解耦的相关知识,这篇来把后i面的部分说一说. 上篇讲到DbSession,现在接着往下讲. 首先,还是把一些类似的操作完善一下 ...
- log4net在Asp.net Mvc中的应用配置与介绍
log4net在.NET中的地位就不多言语了,此篇文章着重配置.较少介绍使用.因为在网上你可以在网上搜到几十万的文章告诉你怎么用.安装的话也不废话了,很简单.Nuget里搜索一下"log4n ...
- spring MVC中Dubbo的配置
1.服务提供方的bubbo配置: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=& ...
- spring mvc中拦截器配置mvc:interceptors
其实在mvc:interceptors标签中,有两种类型的配置,一种直接配置一个bean(bean和ref归为一类),另一种还要配置上拦截的路径和排除的路径.直接配置的bean那就代表对所有的请求进行 ...
- spring mvc 中web.xml配置信息解释
在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...
- spring mvc 中 controller 路径配置
下图中,由于红色部分(value="/")的存在,导致 host:port/项目/dimlist 无法被映射到dimList方法,解决办法是将其去掉. package cn.bgo ...
随机推荐
- 使用Topshelf 5步创建Windows 服务 z
使用Topshelf创建Windows 服务简要的介绍了创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with T ...
- 内存调试工具---valgrind
安装 1.到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz2 2.解压安装包:tar –jxvf valgrind-3.2.3.tar.bz2 3.解压后生成目录 ...
- JAVA中关于同步与死锁的问题
java中当多个现成同时操纵同一资源的时候需要考虑同步的问题.如车站售票,不同售票点卖同一班次车票的时候就要同步,否则卖票会有问题.下面代码模拟车站卖票: class TicketSeller imp ...
- 用JSON方式回调服务器
<script language="javascript"> $(function(){ $.getJSON('http://xxx/system/ecmall_ins ...
- Java是传值还是传引用
http://www.bccn.net/Article/kfyy/java/jszl/200601/3069.html 对于基本数据类型(整型.浮点型.字符型.布尔型等),传值;对于引用类型(对象.数 ...
- XMLHttpRequest的五步使用方法
<html> <head> <title>Demo</title> <style> body,input,button,select,h1{ ...
- iOS 面试题 总结
#include <iostream> using namespace std; int main () { char p[]={'a','b','c'}, q[]="abc&q ...
- STL之vetor 排序
1 STL提供的Sort 算法 C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点.STL 排序算法同样需要保持高效.因此,对于不同的需求,STL提供的不同的函数, ...
- linux下LAMP环境搭建尝试
最近,学习搭建了LAMP服务环境,中间遇到了很多问题,经过不断摸索总算得以解决.为了大家少走弯路,现将相关经验进行总结. linux下软件安装分为自动安装和手动安装两种,自动安装借助工具如yum等,自 ...
- django-ajax之post方式
post方式不同于get方式可以被django直接得到,因为django为post加入了csrf保护, 详细的文档地址https://docs.djangoproject.com/en/dev/re ...