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参数有效,但如果它是字符串,则失败。有人能解释一下吗?

API命令未设置模型

发现uri中的%23是问题所在。删除它使模型再次发挥作用。