我有一个相当简单的 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 为其生成参数文档?