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