0

我正在看一本书中的一个例子,作者试图创建一个自定义控制器工厂,如下所示。(仅指 CreateController 方法)

public IController CreateController(RequestContext requestContext,  
            string controllerName) { 

            Type targetType = null; 
            switch (controllerName) { 
                case "Product": 
                    targetType = typeof(ProductController); 
                    break; 
                case "Customer": 
                    targetType = typeof(CustomerController); 
                    break; 
                default: 
                    requestContext.RouteData.Values["controller"] = "Product"; 
                    targetType = typeof(ProductController); 
                    break; 
            } 

            return targetType == null ? null : 
                (IController)DependencyResolver.Current.GetService(targetType); 
        }

对于默认情况,controllerName 默认情况的值被设置为现有的控制器(产品)。给出的原因是,这将导致 MVC 框架搜索与备用控制器关联的视图,而不是用户请求的控制器。我的问题是为什么没有以类似的方式搜索案例产品和客户的视图?

4

1 回答 1

0

您现在将使用自定义控制器工厂。但默认视图引擎配置为在以下位置进行搜索。(例如 Home 控制器、Index 操作)

~/Views/Home/Index.cshtml
~/Views/Home/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml 

~/Views/Home/Index.aspx
~/Views/Home/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx

您可以编写自定义视图引擎并实现它以在其他位置进行搜索,从而实现“后备”位置。

于 2014-04-25T10:13:52.133 回答