我有一个像这样的Controller动作:
public async Task<HttpResponseMessage> Put(
[FromUri] ResourceSpec resource,
//ValidationType? validationType,
CreateResourceRequest body)
public enum ValidationType
{
name = 1,
}
效果很好 - 资源对象和正文对象(类)分别从URL路由参数和请求体中填充。
我想要做的事情就是将可选的validationType参数绑定到PUT请求中的查询字符串参数。
当我取消注释ValidationType行(并且验证类型是枚举),并发送带有?validationType = name查询参数的url时,我会收到错误路由到某个操作,例如405方法不允许(允许:GET)(是的,我在这个控制器上有一个GET方法,不采用validationType参数。)
是的,我尝试在路由代码中将参数设置为可选:
defaults: new { controller = "Resource", validationType = RouteParameter.Optional }
并尝试了
[FromUri] ValidationType? validationType,
的变化。请告诉我为什么这不起作用!
更新:好的我把它带到 route 但不是参数bind。如果我引入一个新的'none'枚举成员并执行
defaults: new { controller = "Resource", validationType = ValidationType.none }
然后我的行动将被召唤。但即使我的查询字符串有?validating=name
,它也始终会获得参数值ValidationType.none! [FromUri]仍然没有区别。是什么给了什么?
答案 0 :(得分:2)
...咄 实际上我的参数名称错了。我混淆了'验证'和'validationType'。多么尴尬。