【问题标题】:Default Controller for an Area?区域的默认控制器?
【发布时间】:2011-02-08 01:35:38
【问题描述】:

这是Trouble setting a default controller in MVC 2 RC Area的副本

但他的回答不能让我满意,因为它不起作用。

我有以下

/Areas/TestArea/Controllers/HelloController
/Areas/TestArea/Views/Hello/Index

/Controllers/HomeController
/Views/Home/Index

使用以下路线:

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

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

我添加了第二个以尝试让http://servername/TestAreahttp://servername/TestArea/Hello 一样工作,但没有成功。基本的http://servername/ 按预期工作。

那么问题来了:如何返回一个区域的默认控制器?

编辑:我上传了一个示例项目来说明我的意思:http://beginningasp.net/TestAsync.zip

【问题讨论】:

    标签: c# asp.net-mvc-2 routing asp.net-mvc-areas


    【解决方案1】:

    尝试在默认路由之前注册 Default2 路由,并将 area=yourareaname 设置为默认值

    routes.MapRoute(
        "Default2", // Route name
        "TestArea/{controller}/{action}/{id}", // URL with parameters
        new { controller = "Hello", action = "Index",area="TestArea",  id = UrlParameter.Optional } // Parameter defaults
    );
    
    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
    

    【讨论】:

    • 一个很好的、坚实的观点。这样做后,我得到以下信息:“找不到视图'索引'或其主视图。搜索了以下位置:”以及所有根视图文件夹的列表。没有搜索该区域的文件夹。
    • @Krisc 您是否使用 mvccontrib 或其他库进行路由?
    • 不,这是一个“空白”的 MVC2 项目(用于测试)。
    • 您是否在 global.asax 中注册了您的区域?
    • 是的。原来是先进行区域注册,所以使用的是没有默认控制器的路由!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    相关资源
    最近更新 更多