【发布时间】:2010-12-30 00:05:00
【问题描述】:
我在 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 对象,而不是Album 的ID。
我的问题是,有没有办法配置 ASP.NET MVC,以便在路由中,它会收到一个名为 album 的查询字符串参数,然后将其作为 albumId 参数传递给控制器?
P.S.我知道我可以在路由表中做到这一点:
routes.MapRoute(null,
"album/{albumId}/pictures",
new { controller = "Album", action = "GetAlbumPictures" });
但由于遗留问题,我必须使其也适用于查询字符串方法。
【问题讨论】:
标签: c# asp.net-mvc routing query-string asp.net-mvc-3