【发布时间】:2012-10-31 12:15:48
【问题描述】:
如何验证 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
没有验证错误,count只是变成了null。
有没有办法检测到这一点并返回错误消息?我想我记得在某个地方看到过带有自定义消息处理程序的解决方案,但我再也找不到它了。
控制器方法如下所示:
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; }
}
【问题讨论】:
标签: asp.net validation asp.net-web-api model-binding