省略URL mvc中的控制器名称

时间:2010-07-02 21:00:10

标签: asp.net-mvc iis-6 routing

我正在寻找类似这篇文章的内容:

How to hide controller name in Url?

只有没有任何ID。

服务器正在运行IIS 6,并且页面已经显示没有扩展名,因此它不是通配符问题。

我想点击http://website.com/action-name

http://website.com/controller/action-name正在工作

我假设这只是一个简单的路由更改,我在某种程度上搞砸了。我当前的路由规则是:

routes.MapRoute(
    "RouteName",
"{action}",
new { controller = "Home", action = "Index" }
);

2 个答案:

答案 0 :(得分:7)

您的新路由规则是否高于默认路由规则{controller, action, id},以便它有机会匹配首先

答案 1 :(得分:3)

问题是您的默认路由仍然可能存在,因此它首先匹配它并默认其预期的其余输入。根据您对controller/action正在发挥作用的评论,我认为您没有删除它,或者它首先出现。你可以张贴整个RegisterRoutes吗?

尝试制作您定义第一条路线的路线,它应该匹配您传递的几乎任何路线。

编辑:添加了RegisterRoutes的外观:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    // This will match anything so if you have something very specific with hard coded
    // values or more items that will need to be match add them here above but do not
    // add defaulted values so it can still fall through to this.
    routes.MapRoute( 
        "RouteName", 
        "{action}", 
        new { controller = "Home", action = "Index" });
}