asp.net mvc url routing - 子文件夹名称

时间:2009-04-16 04:44:22

标签: asp.net-mvc url-routing

我想创建一个网址,如下所示:

公告,健康,政策是控制者

所以我制作了一个像这样的新网址路线图:

routes.MapRoute(
 "News",
 "news/{controller}/{action}/{id}",
 new { controller = "Announcement", action = "Index", id = "" }
);

它工作正常但是,在两个网址显示相同页面之后:

我想阻止第二个网址。

我该怎么办?

由于 权

3 个答案:

答案 0 :(得分:10)

如果您仍然设置了默认路线,则需要将其删除或添加路线约束,以使其与您的新闻路径不匹配。

删除它:

routes.MapRoute( "Default",
                 "{controller}/{action}/{id}",
                 new { controller = "Home", action = "Index", id = "" } );

或添加约束:

routes.MapRoute( "Default",
                 "{controller}/{action}/{id}",
                 new { controller = "Home", action = "Index", id = "" },
                 new { controller = "(Home|Other)" } );

约束将允许默认路由仅匹配控制器Home和Other,但不匹配Announcment,Health或Policy(或其他任何内容)。

答案 1 :(得分:1)

如果有任何默认路由映射,则将其移动到映射的末尾。如果这没有帮助,那么您可以尝试Url Routing Debugger

答案 2 :(得分:0)

从逻辑上讲,第二个网址不应该有用。因为新闻是您在IIS中托管的应用程序名称,我想您可能已将其放在默认网站中。因此,如果您正在访问应用程序,则UR​​L始终为

http://localhost/ 新闻 /控制器/动作

如果你给这个

http://localhost/controller/action,它不知道要查找哪个应用程序。

我建议你创建一个虚拟目录'news',如果你还没有创建一个,然后在那里发布所有内容。 另外,请确保您尚未在Inetpub \ wwwroot \ directory中发布您的应用程序文件。

等待你的回复继续。