在ASP.NET MVC中避免使用路由规则的Controller

时间:2010-03-23 00:33:02

标签: asp.net-mvc url-routing asp.net-mvc-routing

我用ASP.NET MVC创建了一个网站。我有一些静态页面,我目前通过名为Home的单个控制器提供服务。这会创建一些相当丑陋的URL。

example.com/Home/About 
example.com/Home/ContactUs 
example.com/Home/Features

你明白了。我宁愿不必为每一个创建一个控制器,因为操作只是调用View而没有传入模型。

有没有办法编写路由规则,从URL中删除控制器?我希望它看起来像:

example.com/About
example.com/ContactUs
example.com/Features

如果没有,这种情况通常如何处理?我想我不是第一个参与其中的人。

2 个答案:

答案 0 :(得分:2)

以下是我之前所做的事情,使用约束来确保快捷方式不与其他路由规则冲突:

routes.MapRoute(
    "HomeShortcuts",
    "{action}",
    new { controller = "Home", action = "Index" },
    new { action = "Index|About|ContactUs|Features" }
);

答案 1 :(得分:1)

在新语句中添加控制器名称的默认值。您不必在网址中包含{controller}。