我想在我的网站上实施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));
}
答案 0 :(得分:1)
您可以将最后一个参数设为可选,然后检查您打开问题的操作,如果它与问题的标题匹配。如果它们不匹配,您只需返回RedirectResult或RedirectToRouteResult
即可答案 1 :(得分:1)
使用RedirectResult
:
public ActionResult Question(int id)
{
string title = GetFromDatabaseUsingQuestionId(id);
return new RedirectResult(string.Format("/question/{0}/{1}", id, title));
}