ASP.NET MVC 3.0 Url Rewritng

时间:2011-05-01 13:43:11

标签: asp.net-mvc-3 url-rewriting

我在家庭控制器中有一个叫做联系人的动作

<mysite>/Home/Contact

我希望能够输入<mysite>/Contact来获得与<mysite>/Home/Contact相同的结果

是否可以使用mvc 3.0路由或RouteMagic?

目前我正在努力实现这一点,但没有运气:

自定义路线:

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

RouteMagic:

 var route = routes.MapRoute("new", "Contact");
            routes.Redirect(r => r.MapRoute("old", "Home/Contact"))
              .To(route);

更新

好的,首先应该定义自定义路由,现在它正在工作(如果是自定义路由),但是出现了一个新问题why route magic returning error

Server Error in '/' Application.
Value cannot be null or empty.
Parameter name: controllerName

2 个答案:

答案 0 :(得分:1)

确定新路线在默认路线之前发生(因为它也会匹配)。

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

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

答案 1 :(得分:0)

你试过iis7中的重写模块吗?

它易于使用,请从这里开始:

http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/