Web API,模型绑定,[FromUri]和WebApiExplorer不能很好地协同工作

时间:2013-08-30 18:04:21

标签: c# asp.net-web-api .net-4.5 model-binding asp.net-mvc-apiexplorer

我有一个相当简单的web api项目,并在CustomerController中使用以下方法:

public class CustomerController : ApiController
{
    [HttpGet]
    public UpdatePasswordResult UpdatePasswordWithUserCode([FromUri] UpdatePasswordWithUserCodeCriteria passwordChangeRequest)
    {
        ...
    }
}

这适用于模型绑定,当用户在URL中键入适当的值时,我的UpdatePasswordWithUserCodeCriteria passwordChangeRequest变量将被填充。

public class UpdatePasswordWithUserCodeCriteria : IParameterCriteria
{
    public string securityCode { get; set; }
    public string newPassword { get; set; }
}

但是,我的帮助文档(使用ApiExplorer生成)从未看到过这种复杂类型,也没有记录它。我在下一页找到了“设置自定义样本”这个区域: http://blogs.msdn.com/b/yaohuang1/archive/2012/10/13/asp-net-web-api-help-page-part-2-providing-custom-samples-on-the-help-page.aspx

在我的HelpPageConfig.cs文件中,我有:

config.SetSampleForType(
    "securityCode=asdfsadfsadf&newPassword=Foo",
    new MediaTypeHeaderValue("application/x-www-form-urlencoded"),
    typeof(UpdatePasswordWithUserCodeCriteria));

除非我取出参数的[FromUri]属性,否则这不会生成参数的文档。当我删除[FromUri]时,ApiExplorer使用参数正确生成帮助文档,但模型绑定不适用于参数:

public class CustomerController : ApiController
{
    [HttpGet]
    public UpdatePasswordResult UpdatePasswordWithUserCode(UpdatePasswordWithUserCodeCriteria passwordChangeRequest)
    {
        ...
    }
}

如何让这两个模型绑定适用于此请求 AND web Api Explorer为其生成参数文档?

0 个答案:

没有答案