Dav*_*ury 37 c# asp.net-mvc-5 asp.net-web-api2
如何在Web Api中生成相同的URL?
var url = Url.Action("Action", "Controller", new { product = product.Id, price = price }, protocol: Request.Url.Scheme);
Run Code Online (Sandbox Code Playgroud)
PS
应该将URL生成为MVC控制器/操作,但是应该从web api中生成.
所以基本上:向我发出一个get请求,api/generateurl然后返回一个url:
http://domain.com/controller/action?product=productId&price=100
Run Code Online (Sandbox Code Playgroud)
Vik*_*tev 50
也许在Web Api Controller中最接近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 }
);
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
MVC控制器
public class MyMvcController : Controller
{
public ActionResult MyAction(int param1, string param2)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
WebApi控制器生成的URL将是http://myDomain/MyMvc/MyAction?param1=1¶m2=somestring.
我没有找到如何传递protocol/url架构,但是它只是一个字符串,如果你知道协议应该是什么,你可以操作它.
希望这可以帮助.
编辑:
这可能有助于协议部分: 使用Url.Link在Web API中生成HTTPS链接
| 归档时间: |
|
| 查看次数: |
40170 次 |
| 最近记录: |