在ASP.NET MVC中,如何在保持“用户友好”URL的同时获取敏感数据?

时间:2016-03-31 08:05:32

标签: asp.net asp.net-mvc asp.net-mvc-4

我正在建立一个在线音乐商店,但我无法显示单个专辑的信息页面。

我希望url看起来像这样:www.musicshop.com/albums/artist_name/album_name

如何将此类url映射到控制器?如何传递相册的id(不在url中显示)?

3 个答案:

答案 0 :(得分:0)

您需要使用artist_namealbum_name才能找到相册,或者需要传递id

如果您使用artist_namealbum_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