我正在创建一个网站,其路线与SO非常相似,因为它们是:
posts/{id}/{title}
我想复制任何给定路线X
任何以/posts/{id}
开头且标题不正确的内容都会被重新发送到/posts/{id}/{title}
在控制器中执行此操作似乎相当尴尬,但在路由级别执行此操作似乎更糟。
我想控制器将是最佳选择。
public ActionResult Display(long id, string title)
{
// try and find post
// if post is null, error
// if post.title != title, permanent redirect to correct title
if (title != "correct-ness-ly")
{
return RedirectToActionPermanent("Display", new { id, title = "correct-ness-ly" });
}
// permanent redirect if name doesn't match
return new ContentResult { Content = "display post-id : {0}, {1}".FormatWith(id, title) }; // found or not
}
有没有“更清洁”的方法来实现这个目标?
更新我刚刚意识到这让我“丢失”了可能存在的任何查询字符串值。除了必须以声明方式传递每个动作参数。