Как получить доступ к методу расширения из контекста представления в MVC Core 2 - PullRequest
0 голосов
/ 24 мая 2018

Мне нужен доступ ViewContext при просмотре, потому что я создал метод расширения и, используя это расширение, я хочу получить доступ к Base Controller при просмотре.

См. Код ниже

public static class ViewContextExtension
{       
    public static BaseController BaseController(this ControllerContext view)
    {
        BaseController objBaseController = null;
        if (view != null)
            objBaseController = view.Controller as BaseController;
        return objBaseController;
    }
}

Я хочу использовать тот же код в MVC Core 2, но не могу получить к нему доступ со стороны просмотра.

Ранее я былиспользуя его в MVC 5.2.3 Например

!ViewContext.BaseController().IsMobileDevice

1 Ответ

0 голосов
/ 02 июня 2018

Я нашел решение по вышеуказанному вопросу.см. ниже.

Использовать библиотеку имен.

using Microsoft.AspNetCore.Mvc;

Найти код ниже

public static class ControllerContextExtension
    {
        /// <summary>
        /// BaseController
        /// </summary>
        /// <param name="view"></param>
        /// <returns></returns>

        public static BaseController BaseController(this ControllerContext view)
        {
            var factory = CreateControllerFactory();
            return factory.CreateController(view) as BaseController;
        }
        private static DefaultControllerFactory CreateControllerFactory()
        {
            var propertyActivators = new IControllerPropertyActivator[]
            {
                  new DefaultControllerPropertyActivator(),
            };

            return new DefaultControllerFactory(
                new DefaultControllerActivator(new TypeActivatorCache()),
                propertyActivators);
        }
    }

Доступприведенный выше код, как показано ниже .cshtml.

controllerContext.BaseController().IsMobileDevice

Предложите, если мы сможем улучшить приведенный выше код.Удачного кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...