我有一个 ApiController,很简单,像这样:
public class AssetController : ApiController
{
// removed for brevity
}
当我从视图中插入到它的路由时,创建的 url 类似于:
http://host/Asset
但我想自定义名称,使其变为:
http://host/assets
如何在不使用完整的自定义路由表的情况下为我的控制器指定自定义名称?
我有一个 ApiController,很简单,像这样:
public class AssetController : ApiController
{
// removed for brevity
}
当我从视图中插入到它的路由时,创建的 url 类似于:
http://host/Asset
但我想自定义名称,使其变为:
http://host/assets
如何在不使用完整的自定义路由表的情况下为我的控制器指定自定义名称?
当我从视图中插入到它的路由时,创建的 url 类似于:
http://host/Asset
你还没有真正展示你是如何进行这种插入的,但以下应该可以正常工作:
@Url.RouteUrl("DefaultApi", new { httproute = "false", controller = "assets" })
如果你想要一个绝对 url,你可以将协议方案指定为第三个参数:
@Url.RouteUrl("DefaultApi", new { httproute = "false", controller = "assets" }, "http")
为了遵守 RESTFul 约定,您应该将控制器重命名为AssetsController
.
我建议查看https://github.com/mccalltd/AttributeRouting库。它通过在每个函数上放置一个属性并给它一个特定的路由(可以是任何东西)来很好地处理这个方面。
我不得不解决这个问题,所以我选择调整我的路由表以反映我真正想要的 API。