English 中文(简体)
Asp.net MVC路由不明确,同一页面有两条路径
原标题:
  • 时间:2008-09-16 08:31:30
  •  标签:

我正在尝试ASP.NET MVC路由,当然也遇到了一个问题。我有一个部分,/Admin/Pages/,也可以通过/Pages/访问,这是不应该的。我可能缺少什么?

global.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/添加一个明确的路由。

问题是,它由默认路由处理,并派生:

controller = "Pages" action = "Index" id = ""

这些参数与管理路由的参数完全相同。

问题回答

对于这样的路由问题,您应该试试我的路由调试器程序集(仅用于测试)。它可以帮助解决这些类型的问题。

附言:如果您试图保护Pages控制器的安全,请确保使用[Authorize]属性。不要仅仅依赖URL授权。

您可以向默认规则添加一个约束,使{Controller}标记不能是“Pages”。

您有第一个路由{action}令牌/参数,它与默认操作的设置冲突。尝试更改路由中的参数名称,或删除默认操作名称。





相关问题
热门标签