【发布时间】:2015-03-13 10:23:59
【问题描述】:
我有一个 Web API 2 API 控制器
[RoutePrefix("things")]
public class ThingsController : APIController
{
[Route("{thingId}", Name="Things.Get")]
public Thing Get(string thingId)
{
//snip...
}
}
一切都很好......除了我想将该路由的 URL 传递给一些 JS 以便它可以构造 URL 来请求 Things
所以在剃刀视图中我已经尝试过
myJavascriptObject.thingUrl = '@Url.Action("Get", "Things", new {area=""})';
但我得到一个空白字符串
我尝试给控制器路由一个明确的名称并使用
@Url.RouteUrl("Things.Get", new {areas="", thingId="foo"}")b
这也是一个空字符串。
我是不是很傻?这应该工作吗?
经过更多尝试后更新。
在 MVC 控制器上(我需要知道 API 控制器路由)
var something = Url.Action("Get", "Things", new {area = ""});
var somethingWithId = Url.Action("Get", "Things", new { area = "", siteId = "fakeId" });
var somethingElse = Url.RouteUrl(new {Action = "Get", Controller = "Things", Area = ""});
var somethingElseWithId = Url.RouteUrl(new { Action = "Get", Controller = "Things", Area = "", siteId = "fakeId" });
这些都是空的。
如果我删除 area="" 条件,那么我会得到一条路线,但其中包含区域名称,并且路线中没有区域名称。
?!
【问题讨论】:
标签: c# asp.net razor asp.net-web-api