StackOverflow就像路由重定向一样

时间:2011-11-13 21:00:43

标签: c# asp.net-mvc iis-7.5 asp.net-mvc-routing

我正在创建一个网站,其路线与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
}

有没有“更清洁”的方法来实现这个目标?

更新我刚刚意识到这让我“丢失”了可能存在的任何查询字符串值。除了必须以声明方式传递每个动作参数。

1 个答案:

答案 0 :(得分:0)

您没有指定正在使用的IIS版本。但对于7岁以上,您可以使用redirect module

对于IIS 6,可以使用多个第三方URL重定向模块。