MVC3 - 如何路由到子网站?

时间:2011-10-07 15:00:38

标签: asp.net-mvc-3

我的主网站中有一个子网站用于网站管理。该网站以

形式存储
  

〜/查看/管理/ VIEWNAME /索引

内置控制器

  

〜/控制器/管理/ ControllerName

我试图访问该页面时遇到异常。

  

未找到视图'index'或其主控或没有视图引擎   支持搜索的位置。以下地点是   搜索:〜/ Views / ViewName / index.aspx~ / Views / ViewName / index.ascx   〜/ Views / Shared / index.aspx~ / Views / Shared / index.ascx   〜/ Views / ViewName / index.cshtml~ / Views / ViewName / index.vbhtml   〜/ Views / Shared / index.cshtml~ / Views / Shared / index.vbhtml

我添加了路线

        routes.MapRoute(
                "Administration", // Route name
                "Administration/{controller}/{action}/{id}", // URL with parameters
                new { controller = "Administration", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

手动直接进入页面

  

http://localhost:999/Administration/BaseItem/index

不会导致异常,但我没有内容。这让我相信它没有找到视图。我做错了什么?

<小时/> 我认为问题是我告诉路由引擎如何路由到Controller,但我没有告诉系统如何路由到View。我在哪里告诉系统视图的位置?

1 个答案:

答案 0 :(得分:3)

问题不在于路线,而在于设计。视图引擎无法找到您的视图,因为它无法找到正确的路径,因为默认视图引擎不是为搜索子网站而设计的。

不要创建子网站,而是在项目中将管理设为Area。在AdministrationAreaRegistration.cs中,您将设置类似于您添加的路线的路线。将您的视图放在Administration文件夹内的Views文件夹中(在Area文件夹中),一切都会正常工作。