1

我目前在VS2010的棕地ASP.NET MVC 3项目中工作。

在这个项目中,视图和控制器位于不同的项目中。这不是我以前见过的。在每个操作方法中,都没有明确说明视图名称,如下所示。

return View("viewName",passingModel);//projects where controllers and views are in same 

我通过右键单击视图并在 VS2012 中隐式执行此操作并执行add view. 所以我并不担心动作方法的返回视图和视图之间的联系在哪里。

与 VS2012 不同,在 VS2010 中,我无法通过右键单击 View 并执行来导航到与一种特定操作方法相关的视图go to view

我试图通过做这个小实验来理解这一点。我创建了一个Controller并创建了一个Action Method调用xxxx,并为它隐式创建了一个视图,如上所述,并xxxx在整个解决方案中搜索了这个词,但这个词只出现在控制器和视图中。

所以,我没能找到答案。我认为视觉工作室本身创建了自己的映射来实现这一点。我想知道是谁在动作方法和视图之间创建了这些隐式连接,以了解我的项目中发生了什么。

编辑:

包含控制器和视图的项目都是类库。不是 asp.net mvc 项目。

Global.aspx文件包含以下内容:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }

        protected void Application_Start()
        {
            DependenciesHelper.Register(new HttpContextWrapper(Context));

            AreaRegistration.RegisterAllAreas();

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

        protected void Application_End()
        {
            //Should close the index
            //If this method is not executed, the search engine will still work.
            SearchService.CloseIndex();
        }
4

1 回答 1

2

映射相当简单。例如,如果您有一个名为“MyBrilliantController”的控制器和一个名为“MyExcellentAction”的操作方法,它只返回return View();它会映射到(在 UI 项目中)~/Views/MyBrilliant/MyExcellentAction.cshtml

唯一不同的是当您使用“区域”时 - 但映射实际上是相同的,它只会首先考虑区域文件夹(即~/Areas/MyArea/Views/MyBrilliant/MyExcellentAction.cshtml

希望有帮助。

编辑 - 您还可以在每个路由的 global.asax 文件中指定命名空间,以便引擎找到控制器

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
        new string[] {
            // namespaces in which to find controllers for this route
            "MySolution.MyControllersLib1.Helpers", 
            "MySolution.MyControllersLib2.Helpers",
            "MySolution.MyControllersLib3.Helpers" 
        } 
    );

}
于 2013-04-05T09:29:33.080 回答