首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC路由问题

MVC路由问题
EN

Stack Overflow用户
提问于 2011-05-21 02:11:40
回答 1查看 275关注 0票数 1

目前,我正在从事一个MVC项目,在这个项目中,我试图实现一种动态路由。我的想法是,我把原来的路由留在了global.asax.cs中,这样这条路由就会处理我制作的每个控制器。例如,联系人和帐户控制器。

上面的控制器会有类似的url

代码语言:javascript
复制
/Contact/
/Account/Logoff/ etc.

我想要添加的第二个路由是当找不到控制器时的一种默认路由。在这种情况下,我假设这将是到页面或页面详细信息的路由。

例如,Url为:

代码语言:javascript
复制
/BBQ/
/BBQ/Accesoires/

我在global.asax.cs中添加了三条路由,我认为它们是正确的。(也是按照正确的顺序)。下面我已经添加了路由:

代码语言:javascript
复制
routes.MapRoute(
"DefaultRoute", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Page", action = "Index", id = UrlParameter.Optional });

routes.MapRoute(
"DefaultPageRoute",
"{category}",
new { controller = "Page", action = "Index", category = UrlParameter.Optional });

routes.MapRoute(
"SecondLevelPageRoute",
"{category}/{subCategory}",
new { controller = "Page", action = "PageDetails", category = UrlParameter.Optional, subCategory = UrlParameter.Optional });

使用此设置,对控制器的调用可以正常工作,但对于/BBQ/之类的页面,它会显示以下错误:

'/‘应用程序中的服务器错误。

找不到该资源。

如果我注释第一个路径,然后转到/BBQ/ url,它就会像一个咒语一样工作。我在此可路由中监督的是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-21 02:22:30

您将默认路由放在第一位,因此它会尝试转到由{controller = "BBQ", Action = "Index" }定义的路由

那条路线应该是最后一条路线。但是,您需要在您的路线中提供更多细节。仅仅有一个分类路由就会产生问题。

例如,如果此路由是第一个

代码语言:javascript
复制
routes.MapRoute(
"DefaultPageRoute",
"{category}",
new { controller = "Page", action = "Index", category = UrlParameter.Optional });

然后,对URL /Contact/的调用将假定您想要转到Page/Index/Contact,而不是/Contact/Index/{id}。我会使用更具体的路由,表示您正在浏览一个类别,如:

代码语言:javascript
复制
routes.MapRoute(
"DefaultPageRoute",
"Category/{category}",
new { controller = "Page", action = "Index", category = UrlParameter.Optional });

所以你需要使用url www.mysite.com/Category/BBQ来查看你想要的东西,但我不认为这都是坏事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6076021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档