网址中的破折号(映射到操作)

Vil*_* H. 3 c# asp.net-web-api json-api

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

URL 可能包含破折号。但是 C# 代码中对应的方法名可能不包含破折号。

我的javascript尝试发布到

http://localhost:50000/jsonapi/activity-exercises
Run Code Online (Sandbox Code Playgroud)

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

[HttpPost]
public HttpResponseMessage ActivityExercises([FromBody] ActivityExerciseEntry value)
{
   // ...
Run Code Online (Sandbox Code Playgroud)

理想情况下,应该有一个属性添加到方法中,以在 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 });
}
Run Code Online (Sandbox Code Playgroud)

Vil*_* H. 5

我想到了。花了很多谷歌搜索,因为这不是很好的记录......

正如我所怀疑的,存在一个我可以使用的属性: [ActionName]

所以端点定义看起来像这样:

[HttpPost]
[ActionName("activity-exercises")]
public HttpResponseMessage ActivityExercises([FromBody] ActivityExerciseEntry value)
{
   ...
Run Code Online (Sandbox Code Playgroud)