如何在C#服务中生成URL?

我希望真的很简单。我只想做

Url.action("Someaction","SomeController",new { id = 3 });

但是在服务类中。不在控制器类或IactionResult方法中

在普通的旧服务类中。由于该服务调用具有所有数据,因此我不想传递其他信息,因此我的服务调用非常干​​净。

我已经接近了,但是似乎什么也没做,要么就是做不到,要么

我试图依赖注入

services.AddScoped<IUrlHelper>(x => x
            .GetRequiredService<IUrlHelperFactory>()
            .GetUrlHelper(x.GetRequiredService<IactionContextaccessor>().actionContext));

在我的服务电话中,我使用了(DI)

public AdminService(...,IUrlHelper urlHelper)

所以在我的服务方式中,我可以做到这一点

string editUrl = _urlHelper.action("EditRole","Admin",new { id = 0 });

它消除了所有红色的弯曲,但是在运行时,这有点给我带来了麻烦

            .GetUrlHelper(x.GetRequiredService<IactionContextaccessor>().actionContext));
wowkrad 回答:如何在C#服务中生成URL?

您可以在服务类中注入IUrlHelper接口。

public class ServiceClass
    {
        private readonly IActionContextAccessor _actionContextAccessor;
        private readonly IUrlHelperFactory _urlHelperFactory;

        public ServiceClass(IActionContextAccessor actionContextAccessor,IUrlHelperFactory urlHelperFactory,)
        {
            _actionContextAccessor = actionContextAccessor;
            _urlHelperFactory = urlHelperFactory;
        }

        public string CreateUrl()
        {
            var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext);
            string url = urlHelper.Action("SomeAction","SomeController");

            return url;
        }
    }
,

@SMM我必须将其添加到我的启动中,否则可以正常工作,所以谢谢

services.AddSingleton<IActionContextAccessor,ActionContextAccessor>();
services.AddSingleton<IUrlHelper,UrlHelper>();
,

Url.Action仅生成一个URL。 @ Url.Action(“ actionName”,“ controllerName”,新的{id = id})

Html.ActionLink自动生成标签。

本文链接:https://www.f2er.com/3144930.html

大家都在问