【问题标题】:Parameter binding not working in WebAPI参数绑定在 WebAPI 中不起作用
【发布时间】:2015-01-10 21:26:57
【问题描述】:

对于以下两个控制器,/api/container/dasdada 返回“a”。如果我做一个container?value=hello,我会得到“你好”。什么会导致参数绑定不起作用?

public HttpResponseMessage Get()
{
    return Request.CreateResponse<string>("a");
}
public HttpResponseMessage Get(string value)
{
    return Request.CreateResponse<string>(value);
}

我正在使用 Katana 来托管它:

HttpConfiguration apiConfig = new HttpConfiguration();

apiConfig.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);
apiConfig.Formatters.Remove(apiConfig.Formatters.XmlFormatter);
apiConfig.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

app.UseDependencyResolver(resolver)
.UseWebApiWithOwinDependencyResolver(resolver, apiConfig);

app.UseWebApi(apiConfig);

【问题讨论】:

    标签: asp.net-web-api


    【解决方案1】:

    您需要一个带有名为id 的参数的方法来绑定“id”:

    公共 HttpResponseMessage 获取(字符串 id) { 返回 Request.CreateResponse(id); }

    访问 /api/container/dasdada 时应该返回“dasdada”

    如果你想绑定两个参数,你可以有一个方法:

    公共 HttpResponseMessage 获取(字符串 id,字符串值) { return Request.CreateResponse(id + ":" + value); }

    这应该为 /api/container/dasdada?value=hello 返回“dasdada:hello”。

    【讨论】:

    • @s093294 嘿没问题,我们都有那样的日子。现在,如果这回答了您的问题,您就知道该怎么做了 wink :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    相关资源
    最近更新 更多