gpt4 book ai didi

asp.net-mvc - 通过路由的 ASP.NET MVC 博客 URL

转载 作者:行者123 更新时间:2023-12-04 20:05:27 25 4
gpt4 key购买 nike

假设我有一个新的 MVC 站点,我想以下列方式实现 URL。从路由的角度来看,对执行此操作的最佳方法有哪些想法?我会将帖子存储在基本数据库表中。从 Controller / Action 的角度来看,我希望它尽可能简单。

/2011/(2011 年以来的所有帖子)

/2011/11/(2011 年 11 月的所有帖子)

/2011/11/07(所有帖子自 2011 年 11 月 7 日起)

/2011/11/07/exact-post-title

/确切的后标题

/关于

/文件

/标签/任何标签

最佳答案

// matches /2011/11/07/exact-post-title
routes.MapRoute(
"ArticleDetails",
"{yyyy}/{mm}/{dd}/{title}",
new { controller = "Articles", action = "Details",
new { yyyy = @"(19|20)\d\d.", mm = @"\d\d", dd = @"\d\d" }
);

// matches /2011/11/07
routes.MapRoute(
"ArticlesByDay",
"{yyyy}/{mm}/{dd}",
new { controller = "Articles", action = "ByDay",
new { yyyy = @"(19|20)\d\d.", mm = @"\d\d", dd = @"\d\d" }
);

// matches /2011/11
routes.MapRoute(
"ArticlesByMonth",
"{yyyy}/{mm}",
new { controller = "Articles", action = "ByMonth",
new { yyyy = @"(19|20)\d\d.", mm = @"\d\d" }
);

// matches /2011
routes.MapRoute(
"ArticlesByYear",
"{yyyy}",
new { controller = "Articles", action = "ByYear",
new { yyyy = @"(19|20)\d\d." }
);

/exact-post-title 路由有点问题。这几乎可以匹配您发送的任何内容。您必须将所有其他可能的路线放在该路线之前才能解决该问题。您也可以在所有这些路由前加上/blog 或/articles 来修复它:
routes.MapRoute(
"ExactPostTitle",
"articles/{title}",
new { controller = "Articles", action = "Details" }
);

现在它不会与以下内容冲突:
routes.MapRoute(
"About",
"about",
new { controller = "Home", action = "About" }
);

存档将是类似的:
routes.MapRoute(
"Archive",
"archive",
new { controller = "Home", action = "Archive" }
);

最后是标签路线:
routes.MapRoute(
"Tag",
"tag/{tagtext}",
new { controller = "Tag", action = "Index" }
);

您可能需要调整路线的顺序,但通常您总是首先想要最具体的路线。

如果您有以下路线:
routes.MapRoute(
"ExactTitle",
"{title}",
new { controller = "Articles", action = "Details" }
);

routes.MapRoute(
"About",
"about",
new { controller = "Home", action = "About" }
);

第一条路线匹配/about,因此如果它们按该顺序排列,您将遇到问题。

关于asp.net-mvc - 通过路由的 ASP.NET MVC 博客 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com