API命令未设置模型
本文关键字:模型 设置 命令 API | 更新日期: 2023-09-27 18:28:18
我有一个奇怪的情况,API命令忽略了用于读取API参数的模型。这是命令和模型。
[HttpGet]
public HttpResponseMessage Debates(string tag, [FromUri]GetDebatesModel model)
{
if (!ModelState.IsValid)
{
return CreateResponse(HttpStatusCode.BadRequest, ModelState);
}
return Request.CreateResponse(HttpStatusCode.OK, model.Fields);
}
型号:
public class GetDebatesModel
{
public GetDebatesModel()
{
Fields = "(default)";
}
public string Fields{ get; set; }
}
这是WebApiConfig,它将命令映射到这个函数:
config.Routes.MapHttpRoute(
name: "contentNestedControllers",
routeTemplate: "content/{controller}/{tag}/{action}",
defaults: new { }
);
当我执行/content/hashtag/%23MinimumWage/Debates时,它只提供了预期的默认值"(default)"。这意味着它识别并实例化模型。
我什么时候做/content/hashtag/%23MinimumWage/辩论?fields=someRandomness此处它只是提供了与我最初从未包含fields参数相同的结果。
有趣的是,如果我将标记参数更改为int,则fields参数有效,但如果它是字符串,则失败。有人能解释一下吗?
发现uri中的%23是问题所在。删除它使模型再次发挥作用。