我有一个Web API控制器FAIRController
。在页面中,我想向其发送一个ajax请求。但是,如果将url设置为@Url.RouteUrl("DefaultApi", new { controller = "FAIR", action = "KittedDate" })
,则会得到null。但是,如果将其更改为@Url.HttpRouteUrl("DefaultApi", new { controller = "FAIR", action = "KittedDate" })
,则会得到正确的URL,例如/Api/FAIR/KittedDate
。
因此,我想“为什么是一种方法而不是另一种方法”的问题是通过“这是一个 http 路线,而不仅仅是一条路线”来回答的。
但这只是提出了一个问题:什么是非HTTP路由?您不能仅使用HTTP请求访问用MVC定义的任何路由吗?它将在侦听HTTP流量的HTTP服务器上运行,并且只有了解HTTP流量,它才能知道有关控制器和操作的所有信息。