Asp.Net Mvc Route问题

时间:2009-11-14 03:18:44

标签: asp.net asp.net-mvc routes

我一直在使用Route Debugger测试一些选项,但没有运气。让我来描述我在尝试的内容:

我将所有路线“翻译”如下(我需要从英语翻译成葡萄牙语,有时简化):

routes.MapRoute("Article.Create", "cms/artigo/criar",
                new { controller = "Article", action = "Create" });

一切正常。由于我已经定义了所有路由,因此我认为我不需要默认路由。所以我有类似的东西:

// Other translation routes
routes.MapRoute("Article.Create", "cms/artigo/criar",
                new { controller = "Article", action = "Create" });
routes.MapRoute("Article.Edit", "cms/artigo/editar/{id}",
                new { controller = "Article", action = "Edit", id = "" });
routes.MapRoute("Home.Index", "inicio",
                new { controller = "Home", action = "Index" });
routes.MapRoute("Home.Contact", "contacto",
                new { controller = "Home", action = "Contact" });

// Error Unknown
routes.MapRoute("Error.Unknown", "erro",
                new { controller = "Error", action = "Unknown" });

// Start
routes.MapRoute("Start", "_Default.aspx",
                new { controller = "Home", action = "Index" });

// Error NotFound
routes.MapRoute("Catch.All", "{*path}",
                new { controller = "Error", action = "NotFound", path = "" });

如果根目录没有匹配则翻译映射,那么如果是未知错误,则只显示“http://domain.com/erro” 如果没有,那么尝试匹配Home / Index 最后去捕获所有路线并仅显示路径如下“http://domain.com/the/invalid/path

在我的网站上。我有:

<customErrors mode="On" defaultRedirect="~/Error/Unknown">
  <error statusCode="404" redirect="~/Error/NotFound" />
</customErrors>

当我启动我的网站时,它总会转到NotFound错误而不是开始页面。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您已经定义了指向您主页的唯一网址是“〜/ yourapp / _Default.aspx”,但您的起始网址是“”〜/ yourapp /“,这将被您的Catch正确拦截。所有路线。 您必须将开始路线更改为:

MapRoute("Start", "", new { controller = "Home", action = "Index" });

顺便说一句:如果您想对您的路线进行单元测试,您可能会对此感兴趣:Unit testing ASP.NET MVC routes。 我提出了一个测试夹具来以表格形式测试路线 - 如果你有许多可能的路线(可用的示例代码),这是理想的。