我正在建立一个在线音乐商店,但我无法显示单个专辑的信息页面。
我希望url
看起来像这样:www.musicshop.com/albums/artist_name/album_name
如何将此类url
映射到控制器?如何传递相册的id
(不在url
中显示)?
答案 0 :(得分:0)
您需要使用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" });
答案 1 :(得分:0)
如果您想以当前格式保留网址,则需要提交请求。为什么在URL中看到相册ID是不好的? 您也可以使用某种不同的方式在数据库中查询相册,例如“艺术家名称”和#39; +' album_name'并为它们创建一个索引(为了让查询更快),或者你甚至可以使用2个字段中的复合键,如果你认为它有意义就完全删除id,尽管我不认为它是#sa;非常好的主意。
答案 2 :(得分:0)
你做不到。使用GET的一个好处是这些URL适合包含在搜索引擎中。 GET URL应包含呈现页面所需的所有内容,或者来自例如谷歌对你的体验会很糟糕。
从id
+ artist_name
派生album_name
,或使网址看起来像www.musicshop.com/albums/id/artist_name/album_name
。