1

以下の 2 つのコントローラーで/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);
4

1 に答える 1

1

idバインドするには、「id」に対して呼び出されるパラメーターを持つメソッドが必要です。

public HttpResponseMessage Get (文字列 ID)
{
   Request.CreateResponse<string>(id); を返します。
}

/api/container/dasdada にアクセスすると、「dasdada」を返す必要があります

両方のパラメーターをバインドする場合は、メソッドを使用できます。

public HttpResponseMessage Get (文字列 ID、文字列値)
{
   return Request.CreateResponse<string>(id + ":" + value);
}

これにより、/api/container/dasdada?value=hello に対して「dasdada:hello」が返されます。

于 2013-09-15T23:43:30.210 に答える