可能重复:
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技术中完成?
答案 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.net和UrlRewriting.net
有两个主要模块虽然它们主要用于ASP.NET 2.0,但它们在3.5中也很好用。
答案 1 :(得分:0)
将ASP.Net MVC与ASP.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?