在Web API控制器中,与Url.Action最相似的助手可能是Url.Link方法,它将通过路由名称、控制器名称、操作名称和路由参数(如果需要)生成URL。
这里提供了一个简单的示例。
默认的App_start/RouteConfig.cs
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Web API 控制器:
public class MyWebApiController : ApiController
{
public string Get()
{
var url = this.Url.Link("Default", new { Controller = "MyMvc", Action = "MyAction", param1 = 1, param2 = "somestring" });
return url;
}
}
MVC控制器
public class MyMvcController : Controller
{
public ActionResult MyAction(int param1, string param2)
{
}
}
WebApi控制器生成的URL将是http://myDomain/MyMvc/MyAction?param1=1¶m2=somestring
。
我没有找到如何传递协议/url模式,但最终它只会成为一个字符串,如果您知道协议应该是什么,就可以操纵它。
这可能对协议部分有所帮助:在Web API中使用Url.Link生成HTTPS链接
Default
is the name of the route. SeeRouteConfig.cs
- Viktor Bahtev