У меня есть метод контроллера в ASP.NET MVC, который выглядит следующим образом:
public ActionResult GetAlbumPictures(int albumId)
{
var album = AlbumRepo.GetSingle(albumId);
var pictures = album.Pictures;
return View(pictures);
}
Маршрутизация для этого метода выглядит следующим образом:
routes.MapRoute(null,
"pictures"
new { controller = "Album", action = "GetAlbumPictures" });
Пользователь будет использоватьследующий URL, чтобы получить изображения, отфильтрованные по идентификатору альбома:
GET http://server/pictures?albumid=10
Однако я бы хотел изменить параметр querystring на album
вместо albumid
:
GET http://server/pictures?album=10
Это будет означать, что метод контроллера должен быть изменен на:
public ActionResult GetPictures(int album)
{
...
}
Однако это не идеально, потому что теперь метод имеет параметр с именем album
, который можно спутать с Album
объект вместо ID
из Album
.
Мой вопрос: есть ли способ настроить ASP.NET MVC так, чтобы в маршрутизации он получалпараметр строки запроса с именем album
, но затем передать его контроллеру как параметр albumId
?
PS Я знаю, что могу сделать это в таблице маршрутизации:
routes.MapRoute(null,
"album/{albumId}/pictures",
new { controller = "Album", action = "GetAlbumPictures" });
Но из-за унаследованных проблем, я должен заставить его работать для строки запроса менятакже.