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
Author: David Dury, 2014-08-11

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&param2=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

 43
Author: Viktor Bahtev,
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