c# - route - forms asp net core
Inyección de IUrlHelper en ASP.NET Core (4)
Para .Net Core 2.0
services.AddMvc();
services.AddScoped<IUrlHelper>(x =>
{
var actionContext = x.GetRequiredService<IActionContextAccessor>().ActionContext;
var factory = x.GetRequiredService<IUrlHelperFactory>();
return factory.GetUrlHelper(actionContext);
});
En RC1 , IUrlHelper
podría inyectarse en servicios (con services.AddMvc()
en clase de inicio)
Esto ya no funciona en RC2 . ¿Alguien sabe cómo hacerlo en RC2, ya que simplemente renovar un UrlHelper
requiere un objeto ActionContext
? No sé cómo sacar eso de un controlador.
Para ASP.NET Core RC2 hay un problema para esto en el repositorio de github . En lugar de inyectar el IUrlHelper
, tome un IUrlHelperFactory
. También suena como si necesitaras el IActionContextAccessor
inyectado como un Controller
ya no tiene una propiedad pública ActionContext
.
Registrar la dependencia:
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
Entonces depende de ello:
public SomeService(IUrlHelperFactory urlHelperFactory,
IActionContextAccessor actionContextAccessor)
{
var urlHelper =
urlHelperFactory.GetUrlHelper(actionContextAccessor.ActionContext);
}
Entonces úsalo como mejor te parezca.
Para Net Core 2.0
Agrega esto después de service.AddMvc()
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
services.AddScoped<IUrlHelper>(factory =>
{
var actionContext = factory.GetService<IActionContextAccessor>()
.ActionContext;
return new UrlHelper(actionContext);
});
ASP.NET Core 2.0
Instalar
PM> Install-Package AspNetCore.IServiceCollection.AddIUrlHelper
Utilizar
public void ConfigureServices(IServiceCollection services)
{
...
services.AddUrlHelper();
...
}
Descargo de responsabilidad: autor de este paquete