【发布时间】:2013-03-15 09:49:13
【问题描述】:
我有一个现有的 WebApi 操作,我想从 HttpPost 切换到 HttpGet。它目前将单个复杂对象作为参数。
型号:
public class BarRequest
{
[JsonProperty("catid")]
public int CategoryId { get; set; }
}
控制器:
public class FooController : ApiController
{
//[HttpPost]
[HttpGet]
[ActionName("bar")]
public void Bar([FromUri] BarRequest request)
{
if (request != null)
{
// CategoryId should be 123, not 0
Debug.WriteLine("Category ID :: {0}", request.CategoryId);
}
}
}
现在,当我发送以下请求时,一切正常。
GET /foo/bar?CategoryId=123
旧的 POST 请求也按预期工作。
POST /foo/bar {"catid":123}
但现在我需要以下请求才能工作:
GET /foo/bar?catid=123
我怎样才能做到这一点?
【问题讨论】:
-
为什么不直接使用 CategoryID 呢?或者为什么不使用 CatID 作为属性名称,或者使用 CatID 作为方法的参数?
-
真实模型具有更多属性。属性命名无法更改(每一端的命名准则 - server/c# 和 client/js)。
-
@MichaelFreidgeim - OP 需要将
CategoryId属性绑定到catid,所以Changing the parameter name Web Api model binding 不会更密切相关吗?
标签: asp.net asp.net-web-api deserialization json.net