2

我有一个相当简单的 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-提供-自定义-样本-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)
    {
        ...
    }
}

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

4

0 回答 0