我想改变:
www.testurl.com/sports/blog/1
体育是我的领域,博客是我的行动,1 是博文的 ID,用于:
www.testurl.com/sports/blog/test-title-of-blog
博客仍然是我的操作,但未显示 id,而是博客的标题/永久链接。
这是我针对此操作的 AreaRegistration:
context.MapRoute(
"sports",
"sports/{action}/{content}",
new { area = "Sports", controller = "Sports", action = "", content = "" });
这是我目前的行动:
[HttpGet]
public ActionResult Blog(string content)
{
int contentId;
if (Int32.TryParse(content, out contentId))
{
model = service.GetBlogById(contentId);
}
else
{
model = service.GetBlogByTitle(content);
}
//Change URL to be: www.testurl.com/sports/blog/ + model.SEOFriendlyTitle
return View(model);
}
用户可以通过博客的 ID 进行搜索,也可以通过标题进行搜索,但我只希望标题出现在 url 栏中,而不是 id。
由于会导致持续维护,我无法通过重定向规则执行此操作。
控制器是执行此操作的正确位置吗? -请记住,在我使用 ID 从数据库中检索到头衔之前,我可能没有头衔
我将如何更改 URL 以显示标题与 ID?