如何在ASP.NET MVC中创建友好的URL
本文关键字:创建 URL MVC ASP NET | 更新日期: 2023-09-27 17:48:48
如何在ASP.NET MVC框架中生成友好的URL?例如,我们有一个URL,它看起来像这样:
http://site/catalogue/BrowseByStyleLevel/1
1是要浏览的研究级别的Id(在这种情况下更高),但我想以StackOverflow的方式重新格式化URL。
例如,这两个URL将把你带到同一个地方:
https://stackoverflow.com/questions/119323/nested-for-loops-in-different-languages
https://stackoverflow.com/questions/119323/
编辑:url的友好部分称为段塞。
解决这个问题有两个步骤。首先,创建一个新路由或更改默认路由以接受一个附加参数:
routes.MapRoute( "Default", // Route name
"{controller}/{action}/{id}/{ignoreThisBit}",
new { controller = "Home",
action = "Index",
id = "",
ignoreThisBit = ""} // Parameter defaults )
现在你可以在URI的末尾键入你想要的任何内容,应用程序就会忽略它
当你渲染链接时,你需要添加"友好"文本:
<%= Html.ActionLink("Link text", "ActionName", "ControllerName",
new { id = 1234, ignoreThisBit="friendly-text-here" });
这就是我在应用程序上实现slug 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="" });
您在global.asax 上有一条路由
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = ""}
// Parameter defaults )
你可以定义自己的路线,比如:
controller是controllers文件夹中的cs类。
你可以用你选择的名字来定义你的id。
系统会将该值传递给您的actionResult方法。
您可以在此处阅读有关此步骤的更多信息:http://www.asp.net/learn/mvc/tutorial-05-cs.aspx