我如何在ASP.NET MVC中创build一个友好的URL?

如何在ASP.NET MVC框架中生成友好的URL? 例如,我们有一个如下所示的URL:

  HTTP://网站/目录/ BrowseByStyleLevel / 1 

1是研究级别(在这种情况下更高)的Id浏览,但我想重新格式化的URL以同样的方式StackOverflow做到这一点。

例如,这两个url会带你到相同的地方:

https://stackoverflow.com/questions/119323/nested-for-loops-in-different-languages

https://stackoverflow.com/questions/119323/

编辑:友好的部分的url被称为一个slu </s>

有两个步骤来解决这个问题。 首先,创build一个新的路由或更改默认的路由来接受一个额外的参数:

 routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}/{ignoreThisBit}", new { controller = "Home", action = "Index", id = "", ignoreThisBit = ""} // Parameter defaults ) 

现在你可以在你的URI的末尾input任何你想要的,应用程序将会忽略它。

当你渲染链接时,你需要添加“友好”的文字:

 <%= Html.ActionLink("Link text", "ActionName", "ControllerName", new { id = 1234, ignoreThisBit="friendly-text-here" }); 

你在global.asax上有一个路由

  routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = ""} // Parameter defaults ) 

你可以定义你自己的路线,如:

控制器是控制器文件夹内的cs类。

你可以定义你的ID – 用你select的名字。

系统会将值传递给你的actionResult方法。

你可以在这里阅读更多关于这个步骤: http : //www.asp.net/learn/mvc/tutorial-05-cs.aspx

这就是我在应用程序上实现了slu URL URL的方式。 注意:默认的Maproute不应该被改变,而且路由也会按照它们添加到路由列表的顺序进行处理。

 routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); routes.MapRoute("Place", "{controller}/{action}/{id}/{slug}", new { controller = "Place", action = "Details", id = UrlParameter.Optional,slug="" });