stackoverflow如何将问题字符串作为文件名?

时间:2011-05-19 19:42:35

标签: .net filenames

  

可能重复:
  How does stackoverflow add the question title to the end of it's routes?

大家好,

我正在开发一个类似于stackoverflow的网站。我还想在我的网站上提出的问题将作为页面的文件名。 例如,stackoverflow问题,如“ stackoverflow如何将问题标题添加到其路径末尾? ”将导致此文件名(从地址栏中获取): “Adding ID and title to URL slugs in ASP.NET MVC 如何此结果计算器-添加最问题标题到所述端 - - 它的路由

如何在.NET技术中完成?

4 个答案:

答案 0 :(得分:2)

这就是你想要使用的技术。

在ASP.NET MVC世界中,您可以使用内置路由,例如:

路线

routes.MapRoute(
    "Question", // Route name
    "questions/{id}/{name}", // URL with parameters
    new { 
        controller = "Questions", 
        action = "Index", 
        id = "0", 
        name = UrlParameter.Optional 
    } // Parameter defaults
);

控制器

public ActionResult Index(int id, string name)
{
    var model = _db.Questions.FirstOrDefault(x => x.Id == id);
    return View(model);
}

在.NET 3.5 Sp1之前,您可以使用Url Rewriting

正如斯科特所说,这个UrlRewriter.netUrlRewriting.net

有两个主要模块

虽然它们主要用于ASP.NET 2.0,但它们在3.5中也很好用。

答案 1 :(得分:0)

ASP.Net MVCASP.Net Routing一起使用。

答案 2 :(得分:0)

所有其他答案(MVC,ASP.NET路由),但这可以使用任何使用URL重写的技术来完成。所有Web服务器都支持URL重写。查看http://www.yourhtmlsource.com/sitemanagement/urlrewriting.html了解一些apache how-to的

编辑:http://www.15seconds.com/Issue/030522.htm如何使用httpmodules

在.NET中重写URL

答案 3 :(得分:0)

StackOverflow使用ASP.NET MVC路由来完成此任务。路线将是这样的:

routes.MapRoute(
    "Questions route",                                      // Route name
    "questions/{id}/{title}",                               // URL with parameters
    new { controller = "Questions", action = "Question", id = "", title = "" }  // Parameter defaults
);

实际上,对于StackOverflow真正重要的是{id}部分,因为这是用于检索问题的内容。标题仅用于搜索引擎优化。您可以自己尝试,只需注意这三个URL会产生相同的结果:

how does stackoverflow put the question string as filename?

how does stackoverflow put the question string as filename?

how does stackoverflow put the question string as filename?