Dans RC1 , IUrlHelper
pourrait être injecté dans les services (avec services.AddMvc()
dans la classe de démarrage)
Cela ne fonctionne plus dans RC2 . Est-ce que quelqu'un sait comment le faire dans RC2 alors que la création d'une UrlHelper
nécessite simplement un objet ActionContext
Je ne sais pas comment obtenir ça en dehors d'un contrôleur.
Pour ASP.NET Core RC2, il existe un problème dans le dépôt github . Au lieu d’injecter la IUrlHelper
, prenez une IUrlHelperFactory
. Il semble également que vous ayez besoin de la IActionContextAccessor
injectée, car Controller
n'a plus de propriété publique ActionContext
.
Enregistrez la dépendance:
services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
Alors dépendons de cela:
public SomeService(IUrlHelperFactory urlHelperFactory,
IActionContextAccessor actionContextAccessor)
{
var urlHelper =
urlHelperFactory.GetUrlHelper(actionContextAccessor.ActionContext);
}
Ensuite, utilisez-le comme bon vous semble.
Pour Net Core 2.0
Ajoutez ceci après 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
Installer
PM> Install-Package AspNetCore.IServiceCollection.AddIUrlHelper
Utilisation
public void ConfigureServices(IServiceCollection services)
{
...
services.AddUrlHelper();
...
}
Disclaimer: auteur de ce paquet
Pour ASP.Net Core 2.0 vous ne devez pas injecter un IUrlHelper. Il est disponible en tant que propriété du contrôleur. ControllerBase.Url est une instance de IUrlHelper.
Pour .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);
});