我在 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 来获取按相册 ID 过滤的图片:
GET http://server/pictures?albumid=10
但是,我想将查询字符串参数更改为album
代替albumid
:
GET http://server/pictures?album=10
这意味着控制器方法需要修改为:
public ActionResult GetPictures(int album)
{
...
}
然而,这并不理想,因为现在该方法有一个名为album
,这可能会被混淆为Album
object而不是ID
of the Album
.
我的问题是,是否有任何方法可以配置 ASP.NET MVC,以便在路由中它将收到一个名为的查询字符串参数album
,但随后将其传递给控制器作为albumId
范围?
P.S.我知道我可以在路由表中执行此操作:
routes.MapRoute(null,
"album/{albumId}/pictures",
new { controller = "Album", action = "GetAlbumPictures" });
但由于遗留问题,我必须使其也适用于查询字符串方法。