Asp.net web api 为什么可以';我不能将这个Web Api参数绑定到查询字符串吗?

Asp.net web api 为什么可以';我不能将这个Web Api参数绑定到查询字符串吗?,asp.net-web-api,model-binding,optional-parameters,query-parameters,Asp.net Web Api,Model Binding,Optional Parameters,Query Parameters,我有一个控制器动作如下: public async Task<HttpResponseMessage> Put( [FromUri] ResourceSpec resource, //ValidationType? validationType, CreateResourceRequest body) public enum ValidationType { name = 1, } 并尝试了 [FromUri] Valida

我有一个控制器动作如下:

public async Task<HttpResponseMessage> Put(
        [FromUri] ResourceSpec resource,
        //ValidationType? validationType,
        CreateResourceRequest body)

public enum ValidationType
{
    name = 1,
}
并尝试了

[FromUri] ValidationType? validationType,
变异。请告诉我为什么这不起作用

更新:好的,我得到它的路线,但不是参数绑定。如果我引入一个新的“无”枚举成员

defaults: new { controller = "Resource", validationType = ValidationType.none }
然后我的行动将被调用。但它将始终获得参数值ValidationType.none,即使我的查询字符串具有
?validating=name
![FromUri]仍然没有什么区别。有什么好处?

嗯。。。
实际上,我把参数的名称搞错了。我混淆了“验证”和“验证类型”。多么尴尬。

现在无法验证,但我认为您还需要ValidationType上的FromUri属性。PUT的默认值是绑定到请求主体,而不是URI。只有GET绑定到URI,因为没有主体。查询字符串是tje uri的一部分。我尝试过使用[FromUri],但没有任何区别。我也尝试过GET,它似乎和PUT有同样的问题。
defaults: new { controller = "Resource", validationType = ValidationType.none }