在网址中划线(映射到操作)

时间:2015-10-16 12:35:40

标签: c# asp.net-web-api json-api

我尝试实现支持JsonApi标准的ASP.NET Web Api控制器(主要由Ember.js使用的http://jsonapi.org/

网址可能包含短划线。但是C#代码中的相应方法名称可能不包含破折号。

我的javascript尝试POST到

http://localhost:50000/jsonapi/activity-exercises

但我无法实现可以接收该请求的端点。 我试过了:

[HttpPost]
public HttpResponseMessage ActivityExercises([FromBody] ActivityExerciseEntry value)
{
   // ...

理想情况下,应该有一个属性要添加到方法中,以在URL中指定映射的操作名称。这样的属性是否存在?

我的路线映射如下所示:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapHttpRoute("EmberJsonApi", "jsonapi/{action}/{id}", new { controller = "JsonApi", id = RouteParameter.Optional });
    routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional });
}

1 个答案:

答案 0 :(得分:3)

我明白了。这需要大量的谷歌搜索,因为这没有很好的文档......

我怀疑,我可以使用一个属性:[ActionName]

所以endpoind定义看起来像这样:

[HttpPost]
[ActionName("activity-exercises")]
public HttpResponseMessage ActivityExercises([FromBody] ActivityExerciseEntry value)
{
   ...