ASP.NET Web API genera url usando Url.Acto
¿Cómo puedo generar la misma url pero en Web Api ?
var url = Url.Action("Action", "Controller", new { product = product.Id, price = price }, protocol: Request.Url.Scheme);
P.d.
La url debe generarse a un controlador/acción MVC pero desde la api web.
Así que básicamente: hacer una solicitud get a mi api/generateurl
y que devolverá una url a:
http://domain.com/controller/action?product=productId&price=100
1 answers
Tal vez el ayudante más cercano a Url.La acción en Web Api Controller es la Url.Método de enlace que generará la url por Nombre de ruta, Nombre del Controlador, Nombre de la Acción y los parámetros de ruta (si es necesario).
Aquí hay un ejemplo simple
El valor predeterminado de App_start / RouteConfig.cs
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
El Controlador 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;
}
}
El Controlador MVC
public class MyMvcController : Controller
{
public ActionResult MyAction(int param1, string param2)
{
// ...
}
}
La url generada por el controlador WebAPI será http://myDomain/MyMvc/MyAction?param1=1¶m2=somestring
.
No encontré cómo pasar el esquema de protocolo / url pero en el y será solo una cadena y se puede manipular si usted sabe lo que el protocolo debe ser.
Espero que esto ayude.
EDITAR:
Esto puede ayudar para la parte del protocolo: Genere un enlace HTTPS en la API web mediante Url.Link
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:13