Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Использование Ninject в asp.net mvc






Устанавливаем Ninject в среду asp.net mvc. Отдельно создаем свой проект LessonProject, создадим там HomeController с методом и view Index.

public class HomeController: Controller

{

public ActionResult Index()

{

return View();

}

}

И

@{

ViewBag.Title = " LessonProject";

Layout = " ~/Views/Shared/_Layout.cshtml";

}

 

< h2> LessonProject< /h2>

Запускаем – работает.

Примечание: В дальнейшем мы будем переносить этот проект в последующие уроки.

Теперь установим модуль Ninject и Ninject.MVC3 для этого проекта.

Install-Package Ninject.MVC3

Добавляем класс в папку App_Start:

[assembly: WebActivator.PreApplicationStartMethod(typeof(LessonProject.App_Start.NinjectWebCommon), " Start")]

[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(LessonProject.App_Start.NinjectWebCommon), " Stop")]

 

namespace LessonProject.App_Start

{

using System;

using System.Web;

 

using Microsoft.Web.Infrastructure.DynamicModuleHelper;

 

using Ninject;

using Ninject.Web.Common;

 

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)

{

}

}

}

 

В RegisterServices мы добавляем инициализацию своих сервисов. Для начала добавим шутливый IWeapon, а в дальнейшем еще будем возвращаться к этому методу для регистрации других сервисов:

public interface IWeapon

{

string Kill();

}

public class Bazuka: IWeapon

{

public string Kill()

{

return " BIG BADABUM! ";

}

}

private static void RegisterServices(IKernel kernel)

{

kernel.Bind< IWeapon> ().To< Bazuka> ();

}

В контроллере используем атрибут [Inject]:

public class HomeController: Controller

{

[Inject]

public IWeapon weapon { get; set; }

 

public ActionResult Index()

{

return View(weapon);

}

}

Изменяем View:

@model LessonProject.Models.IWeapon

@{

ViewBag.Title = " LessonProject";

Layout = " ~/Views/Shared/_Layout.cshtml";

}

 

< h2> LessonProject< /h2>

 

< p>

@Model.Kill()

< /p>

На выходе получаем:

Ninject использует WebActivator:

- регистрирует свои модули OnePerRequestHttpModule и NinjectHttpModule

- создает StandartKernel

- инициализирует наши сервисы.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.