【发布时间】:2012-03-25 18:32:37
【问题描述】:
我正在使用带有 Web API 的 ASP.NET MVC 4 Beta - 尽管我相信路由实现与与此问题相关的 .NET 4.0 没有显着差异。 MapHttpRoute,在下面的代码中使用,随 MVC 4 一起提供,是一种扩展方法,与 MapRoute 执行相同的功能,但用于 WebApi 控制器。
我有一个旧的 Web 服务方法,我想为其创建一个 ASP.NET 路由。该方法目前具有以下签名:
NewsItemList ListNewsItems(string category, int maxResults)
它应该由 URI 如下所示的请求映射:
~/news?category=finance&maxResults=50
查询字符串参数中的一个或两个都不能出现。
我正在努力寻找一种方法来定义支持此方法的路线。
我使用MapHttpRoute 注册路由并为控制器设置默认值,并适当地为控制器和方法设置操作值。以下是我尝试过的一些模板:
-
"news"捕获"~/news"并正确绑定到方法,但是 不会使用查询字符串捕获任何内容。 -
"news{*query}不是 允许,因为你不能有一个包罗万象的东西,除非它是专有的 Uri 段 -
"news{query}"捕获查询字符串但不捕获 绑定到方法
我正在寻找一种不太激进的前进方式,因为这是应用程序中的一个边缘案例。该解决方案必须适合许多其他现有路线。理想情况下,我也希望避免走 Uri 重写器路径。
【问题讨论】:
标签: c# asp.net asp.net-web-api asp.net-mvc-routing