如何验证 ASP.NET Web API 中可选参数的数据类型?
我的路由如下所示:
context.MapHttpRoute(
name: "ItemList",
routeTemplate: "api/v1/projects/{projectId}/items",
defaults: new
{
area = AreaName,
controller = "Items",
action = "GetItems",
offset = RouteParameter.Optional,
count = RouteParameter.Optional,
}
);
这些都是有效的请求:
http://localhost/api/v1/projects/1/items
http://localhost/api/v1/projects/1/items?offset=20
http://localhost/api/v1/projects/1/items?count=10
http://localhost/api/v1/projects/1/items?offset=20&count=10
一切正常,除非为其中一个参数提供了无效值。例如,
http://localhost/api/v1/projects/1/items?count=a
没有验证错误,计数只是变为空。
有没有办法检测到这一点并返回错误消息?我想我记得在某个地方看到了一个带有自定义消息处理程序的解决方案,但我再也找不到它了。
控制器方法如下所示:
public IEnumerable<Item> GetItems([FromUri]GetItemsParams getItemsParams)
{
// logic
}
params 类如下所示:
[DataContract]
public class GetItemsParams
{
[DataMember] public int? offset { get; set; }
[DataMember] public int? count { get; set; }
}