实现StackOverflow类型的URL重定向

时间:2014-03-03 09:47:20

标签: .net asp.net-mvc asp.net-mvc-4 redirect

我想在我的网站上实施StackOverflow类型的网址重定向。 对于例如

当您在浏览器中输入https://stackoverflow.com/questions/11227809/时,它会自动将您重定向到https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array

即使您输入代替https://stackoverflow.com/questions/11227809/askl;fl;aksf等标题的剪贴簿值,它也会根据帖子编号11227809将您重定向到正确的值。

这是哪种类型的重定向?多数民众赞成301我知道但是如何使用.Net MVC实现这一目标?

我在这里看过非MVC解决方案Here但需要一个基于MVC的解决方案。 三江源。


My Route:

routes.MapRoute("QuestionUrlDetermine", "{qId}/{questionTitle}", new { controller = "Home", action = "QuestionUrlDetermine", questionTitle = UrlParameter.Optional }, new { qId = @"^\d{1,3}$" });

Action:

public ActionResult QuestionUrlDetermine (int qId)
{
    …
        return new RedirectResult(string.Format("/{0}/{1}", qId, questionTitle));
}

2 个答案:

答案 0 :(得分:1)

您可以将最后一个参数设为可选,然后检查您打开问题的操作,如果它与问题的标题匹配。如果它们不匹配,您只需返回RedirectResultRedirectToRouteResult

即可

答案 1 :(得分:1)

使用RedirectResult

可以很容易地完成此操作
public ActionResult Question(int id)
{
    string title = GetFromDatabaseUsingQuestionId(id);
    return new RedirectResult(string.Format("/question/{0}/{1}", id, title));
}