如何在ASP.NET Web API中指定控制器的名称?

时间:2012-08-22 19:50:39

标签: asp.net-web-api

我有一个ApiController,很简单,就像这样:

public class AssetController : ApiController
{
// removed for brevity
}

当我从视图中插入路径时,创建的网址类似于:

http://host/Asset

但我想自定义名称,以便它成为:

http://host/assets

如何为控制器指定自定义名称,而无需使用完整的自定义路由表?

3 个答案:

答案 0 :(得分:1)

  

当我从视图中插入路径时,创建的网址类似于:http://host/Asset

你还没有真正展示你如何做插入,但以下情况应该可以正常工作:

@Url.RouteUrl("DefaultApi", new { httproute = "false", controller = "assets" })

如果你想要一个绝对url,你可以将协议方案指定为第三个参数:

@Url.RouteUrl("DefaultApi", new { httproute = "false", controller = "assets" }, "http")

为了遵守RESTFul约定,您应该将控制器重命名为AssetsController

答案 1 :(得分:1)

我建议查看https://github.com/mccalltd/AttributeRouting库。它通过在每个函数上放置一个属性并给它一个特定的路径(可以是任何东西)来很好地处理这个方面。

答案 2 :(得分:0)

我必须解决此问题,因此我选择调整路由表以反映我真正想要的API。