![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Использование 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 - инициализирует наши сервисы.
|