我尝试了ASP.NET 视的路由,并有当然偶然发现了一个问题。我有一个部分,/Admin/Pages/,这也是可以通过/Pages/,它不应该。什么可能我会丢失?

路由代码在全球性的。asax:

public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Pages",    // Route name
            "Admin/Pages/{action}/{id}",  // URL with parameters
            // Parameter defaults
            new { controller = "Pages", action = "Index", id = "" }  
        );

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

    }

谢谢!

有帮助吗?

解决方案

我建议添加一个明确的路线/Pages/在开始。

问题是,它正在通过默认的路线,并得出:

控制器="网页" action="Index" id=""

这是完全一样的参数对于你的管理线路。

其他提示

路由问题喜欢这个,你应该试试我的 路线,调试器 会(使用只有在测试)。它可以帮助找出这些类型的问题。

P.S.如果你想的安全网页控制器,确保使用[授权]的属性。不只是依赖于URL授权。

你可以添加一个制约因素的默认规则,以便的{控制器}标记不可能是"网页"。

你在你的第一个路线{行动}令牌/参数,获取在冲突与设置的默认的作用。试着改变的参数名在您的途径,或者删除默认的行动的名称。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top