我正在建立一个在线音乐商店,我有困难显示单一专辑的信息页面。
我希望url看起来像这样:www.musicshop.com/albums/artist_name/album_name
如何将这种url映射到Controller,以及如何传递相册的id (而不显示在url中)?
发布于 2016-03-31 08:14:23
您要么需要使用artist_name和album_name来查找相册,要么需要传递id。
如果您正在使用artist_name和album_name方法,您的控制器操作应该如下所示
public ActionResult Album(string artist_name, string album_name)
{
//get album by artist name and album name
}这条路是
routes.MapRoute(name: "AlbumByArtistNameAndAlbumName",
url: "albums/{artist_name}/{album_name}",
defaults: new { controller = "Albums", action = "Album" });发布于 2016-03-31 08:14:32
如果要将URL保持在当前格式,则需要post请求。为什么在URL中看到相册id会很糟糕呢?您也可以使用一些不同的方式来查询DB的相册,如'artist_name‘+ 'album_name’,并在它们上创建索引(以使查询速度更快),或者您甚至可以使用两个字段中的复合键,如果您认为这是有意义的话,可以完全删除id,尽管我不认为这是一个非常好的主意。
发布于 2016-03-31 08:14:45
你不能。使用GET的一个好处是这些URL适合包含在搜索引擎中。GET URL应该包含呈现页面所需的所有内容,否则来自Google的任何人都会有糟糕的体验。
要么从id + album_name派生artist_name,要么使URL看起来像www.musicshop.com/albums/id/artist_name/album_name。
https://stackoverflow.com/questions/36327561
复制相似问题