我们有一个与艺术家和场馆相关的网站,正在使用ASP.net MVC进行开发。
我们将艺术家视图存放在一个文件夹中(Views/Artists/..),有一个ArtistsController、ArtistsRepository,并遵循REST动作名称,如Show、New、Delete等。
在我们最初模拟网站时,我们在测试环境下的URL地址是/artists/Show/1209,一切正常。
但现在我们需要更改这种方式,让网站显示为/artists/Madonna和/artists/Foo-Fighters等。
然而,我们该如何区分有效的艺术家名称和该控制器操作的名称?例如,artists/PostComment或artists/DeleteComment?
我需要允许路由处理这个问题。我们默认的Show路由如下:
我们将艺术家视图存放在一个文件夹中(Views/Artists/..),有一个ArtistsController、ArtistsRepository,并遵循REST动作名称,如Show、New、Delete等。
在我们最初模拟网站时,我们在测试环境下的URL地址是/artists/Show/1209,一切正常。
但现在我们需要更改这种方式,让网站显示为/artists/Madonna和/artists/Foo-Fighters等。
然而,我们该如何区分有效的艺术家名称和该控制器操作的名称?例如,artists/PostComment或artists/DeleteComment?
我需要允许路由处理这个问题。我们默认的Show路由如下:
routes.MapRoute(
"ArtistDefault",
"artists/{artistName}",
new { controller = "Artists", action = "Show", artistName = ""}
解决这个问题的一种方法是让我们的网站在 /artists 上可见,但将控制器重命名为单数形式 - ArtistController - 而不是 ArtistsController。这将违反我们开始时采用的命名约定(但是嘿!)。
你有其他建议吗?如果可能的话,我们还可以根据动词进行路由(例如 PostComment 将是一个 POST 请求,因此我们或许可以路由到该操作),但我不确定这是否明智,更不用说是否可能了。
谢谢