当前位置: 首页>>代码示例>>C#>>正文


C# IControllerFactory.CreateController方法代码示例

本文整理汇总了C#中IControllerFactory.CreateController方法的典型用法代码示例。如果您正苦于以下问题:C# IControllerFactory.CreateController方法的具体用法?C# IControllerFactory.CreateController怎么用?C# IControllerFactory.CreateController使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IControllerFactory的用法示例。


在下文中一共展示了IControllerFactory.CreateController方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: BeginProcessRequest

            // IHttpAsyncHandler members
            public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback asyncCallback, object extraData)
            {
                IAsyncResult result = null;
                // Get the controller type
                string controllerName = _requestContext.RouteData.GetRequiredString("controller");

                // Obtain an instance of the controller
                _factory = ControllerBuilder.Current.GetControllerFactory();
                var controller = _factory.CreateController(_requestContext, controllerName) as ControllerBase;
                if (controller == null)
                  throw new InvalidOperationException("Can't locate the controller " + controllerName);

                try
                {
                  _asyncController = controller as AsyncController;
                  if (_asyncController == null)
                throw new InvalidOperationException("Controller isn't an AsyncController.");

                  // Set up asynchronous processing
                  _httpContext = HttpContext.Current; // Save this for later

                  result = _asyncController.Execute(_requestContext, asyncCallback);
                }
                finally
                {
                  if (result == null || result.CompletedSynchronously)
                  {
                this._factory.ReleaseController(controller);
                  }
                }

                return result;
            }
开发者ID:benlovell,项目名称:machine,代码行数:34,代码来源:AsyncMvcRouteHandler.cs

示例2: CreateController

        internal IController CreateController(IControllerFactory controllerFactory, RequestContext requestContext, string controllerName)
        {
            try
            {
                return controllerFactory.CreateController(requestContext, controllerName);
            }
            catch (HttpException ex)
            {
                if (ex.GetHttpCode() == 404)
                {
                    return null;
                }

                throw;
            }
        }
开发者ID:mergut,项目名称:MvcCustomErrors,代码行数:16,代码来源:ErrorPageProcessor.cs

示例3: ProcessRequestInit

        /// <summary>
        /// 通过Http上下文对象创建对应的controller工厂和controller
        /// </summary>
        /// <param name="httpContext">封装的Http上下文</param>
        /// <param name="controller">返回当前请求的controller实例</param>
        /// <param name="factory">返回controller工厂实例</param>
        private void ProcessRequestInit(HttpContextBase httpContext, out IController controller, out IControllerFactory factory)
        {
            // If request validation has already been enabled, make it lazy. This allows attributes like [HttpPost] (which looks
            // at Request.Form) to work correctly without triggering full validation.
            // Tolerate null HttpContext for testing.
            HttpContext currentContext = HttpContext.Current;
            if (currentContext != null)
            {
                bool? isRequestValidationEnabled = ValidationUtility.IsValidationEnabled(currentContext);
                if (isRequestValidationEnabled == true)
                {
                    ValidationUtility.EnableDynamicValidation(currentContext);
                }
            }

            // 在响应头中返回MVC的版本号信息 如:X-AspNetMvc-Version  5.0
            AddVersionHeader(httpContext);
            // 移除路由数据中的可选项Optional
            RemoveOptionalRoutingParameters();

            // 获取当前请求的控制器名称
            // Get the controller type
            string controllerName = RequestContext.RouteData.GetRequiredString("controller");

            // 通过工厂创建controller的实例
            // Instantiate the controller and call Execute
            factory = ControllerBuilder.GetControllerFactory();
            controller = factory.CreateController(RequestContext, controllerName);
            if (controller == null)
            {
                throw new InvalidOperationException(
                    String.Format(
                        CultureInfo.CurrentCulture,
                        MvcResources.ControllerBuilder_FactoryReturnedNull,
                        factory.GetType(),
                        controllerName));
            }
        }
开发者ID:mstmdev,项目名称:Mstm.aspnetwebstack,代码行数:44,代码来源:MvcHandler.cs

示例4: ProcessRequestInit

        private void ProcessRequestInit(HttpContextBase httpContext, out IController controller, out IControllerFactory factory)
        {
            AddVersionHeader(httpContext);
            RemoveOptionalRoutingParameters();

            // Get the controller type
            string controllerName = RequestContext.RouteData.GetRequiredString("controller");

            // Instantiate the controller and call Execute
            factory = ControllerBuilder.GetControllerFactory();
            controller = factory.CreateController(RequestContext, controllerName);
            if (controller == null) {
                throw new InvalidOperationException(
                    String.Format(
                        CultureInfo.CurrentUICulture,
                        MvcResources.ControllerBuilder_FactoryReturnedNull,
                        factory.GetType(),
                        controllerName));
            }
        }
开发者ID:jenrom,项目名称:Spikes,代码行数:20,代码来源:MvcHandler.cs

示例5: CreateController

        /// <summary>
        /// Creates a controller using the controller factory
        /// </summary>
        private static ControllerBase CreateController(ControllerContext context, IControllerFactory factory, RouteDefinition routeDef)
        {
            var controller = factory.CreateController(context.RequestContext, routeDef.ControllerName) as ControllerBase;

            if (controller == null)
                throw new InvalidOperationException("Could not create controller with name " + routeDef.ControllerName + ".");

            return controller;
        }
开发者ID:phaniarveti,项目名称:Experiments,代码行数:12,代码来源:UmbracoPageResult.cs

示例6: DispatchRequest

        /// <summary>
        /// Dispatches the request.
        /// </summary>
        /// <param name="controllerFactory">The controller factory.</param>
        /// <param name="controller">The controller.</param>
        /// <param name="action">The action.</param>
        private void DispatchRequest(IControllerFactory controllerFactory, string controller, string action)
        {
            var route = GetRoute(controller, action);
            _requestContext.RouteData.Values["x-action"] = action;
            _requestContext.RouteData.Values["x-controller"] = controller;

            if (route != null)
            {
                _requestContext.RouteData.Values["controller"] = route.Controller;
                _requestContext.RouteData.Values["action"] = route.Action;

                if (route.Area != string.Empty)
                {
                    _requestContext.RouteData.DataTokens["area"] = route.Area;
                }

                controller = route.Controller;
            }
            else
            {
                _requestContext.RouteData.Values["action"] = _configuration.DefaultAction;
                controller = _configuration.DefaultController;
            }

            var viewController = controllerFactory.CreateController(_requestContext, controller);
            if (viewController != null)
            {
                viewController.Execute(_requestContext);
            }
        }
开发者ID:anjumrizwi,项目名称:ControllerLess,代码行数:36,代码来源:ControllerLessHttpHandler.cs

示例7: TryCreateController

 protected virtual bool TryCreateController(RequestContext requestContext, string controllerName, IControllerFactory controllerFactory, out ControllerBase controller)
 {
     controller = null;
     if (controllerFactory != null)
     {
         try
         {
             controller = controllerFactory.CreateController(requestContext, controllerName) as ControllerBase;
             if (controller != null)
                 return true;
         }
         catch
         {
             return false;
         }
     }
     return false;
 }
开发者ID:agrynco,项目名称:MvcSiteMapProvider,代码行数:18,代码来源:AuthorizeAttributeAclModule.cs


注:本文中的IControllerFactory.CreateController方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。