2009-11-14 180 views
1

我一直在使用Route Debugger测试几个选项,但没有运气。让我来描述一下我想:Asp.Net Mvc路由问题

我已经全部路线“翻译”如下(我需要从英语翻译成葡萄牙语和某个简化):

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
如果没有,那么尝试匹配首页/索引。
最后去捕获所有路线,如下“http://domain.com/the/invalid/path

在我的web.config我有只显示路径:

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

会发生什么事,当我开始我的网站总是去NOTFOUND误差而不是启动页。

我在做什么错?

+0

如果您可以编辑问题并修改代码使其显示为代码,会更容易。点击101010按钮并将代码粘贴在那里 – Luke101 2009-11-14 03:25:57

+0

为什么你不使用有问题的代码小部件来突出显示你的代码 – 2009-11-16 03:58:56

回答

0

您已经定义了唯一的URL,它指向你的主页,是“〜/ yourapp/_Default.aspx”,但你的起始URL是“” 〜/ yourapp /“,这将正确地被你的Catch.All路由拦截。 你必须改变你的启动路线是:

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

顺便说一句。:如果你想单元测试你的路线,你可能有兴趣在此:Unit testing ASP.NET MVC routes。 我提供了一个测试夹具来测试表格样式中的路线 - 如果您有许多可能的路线(样本代码可用),这是理想选择。