Начало работы с Ninject

Я просмотрел первые 2 руководства для начинающих по Ninject на dimecasts.net . Теперь я хочу использовать Ninject 2.2 в ASP.NET MVC 3. Мне нужно представление с имитацией модели. При вызове службы я получаю ссылку на объект, не заданную для экземпляра объекта;

    public class HomeController : Controller
    {
        private readonly IMilestoneService _service;

        public HomeController()
        {
        }

        HomeController(IMilestoneService service)
        {
            _service = service;
        }

        public ActionResult Index()
        {
            ViewBag.Message = "Change Request System";

            return View();
        }

        public ActionResult About()
        {
            return View();
        }

        #region Partial views
        public ActionResult Milestone()
        {
            var result = _service.GetMileStones();//OBJECT REF ERROR
            return View(result);
        }
        #endregion
    }

//####GLOBAL.ASAX
//By using the NinjectHttpApplication, it automatically takes care of controllers, starting up mvc, etc.
//Ninject.Web.Mvc
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 void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        //StartNinject();
    }

    #region Inversion of Control

    protected override IKernel CreateKernel()
    {
        return Container;
    }

    static IKernel _container;
    public static IKernel Container
    {
        get
        {
            if (_container == null)
            {
                _container = new StandardKernel(new SiteModule());
            }
            return _container;
        }
    }

    internal class SiteModule : NinjectModule
    {
        public override void Load()
        {
            //Set up ninject bindings here.
            Bind().To();
        }
    }
    #endregion
}

Я использую Razor, он является частичным представлением вехи

@foreach (var item in Model)
{
    
item.Name
}

Наконец, индекс домашнего представления

@{
    ViewBag.Title = "Home Page";
}

@ViewBag.Message

@Html.Action("Milestone");

Править 11/20 / 2013

Обратите внимание, что Ninject выпустила версию 2.0. Изменения красиво описаны на их сайте . Примечание StandardModule теперь NinjectModule , а пространство имен Ninject.Core больше не существует. Мне удалось заменить его только Ninject .

7
задан P.Brian.Mackey 20 November 2013 в 14:46
поделиться