【问题标题】:ASP.NET MVC 2 Areas, Strange routing behaviorASP.NET MVC 2 区域,奇怪的路由行为
【发布时间】:2010-04-24 13:15:02
【问题描述】:

我创建了一个名为“Admin”的区域。我还在这个区域创建了一个控制器(页面)和一个视图(列表)。

当我运行我的应用程序并输入 URL“/Admin/Pages/List”时,我收到了 The resource cannot be found 错误。

当我进入 /Pages/List 时,Action 方法被命中但没有找到视图,因为应用程序在错误的目录中搜索

~/Views/Pages/List.aspx ~/Views/Pages/List.ascx ~/Views/Shared/List.aspx ~/Views/Shared/List.ascx

视图位于 /Admin/Pages/List 中。

我的管理区域路由配置:

public class AdminAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Admin";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new { controller= "Pages",action = "Index", id = "" }
        );
    }
}

【问题讨论】:

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


    【解决方案1】:

    您是否已将AreaRegistration.RegisterAllAreas(); 添加到 Global.asax.cs

    这应该在您现有的routes.MapRoute 调用之前运行

    编辑:

    刚刚查看了我的管理区域,路由看起来像这样:

    context.MapRoute(
                    "Admin_Default",
                    "Admin/{controller}/{action}/{id}",
                    new { action = "Index", id = UrlParameter.Optional }
                );
    

    【讨论】:

    • 是的,它就在那里。但它无论如何都不起作用。我了解路由吗?区域的 url 应该类似于 www.domain.com/Area/Controller/Action/Parameter ?
    • 没关系。我找到了导致这种奇怪行为的原因。早些时候,我仅使用拖放将控制器从根目录复制到该区域。未更改的命名空间会导致问题。我的错。无论如何,谢谢你的时间..
    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2011-03-31
    • 2017-09-01
    • 2016-09-25
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多