Tag: urlhelper

MVC 6 IUrlHelperdependency injection

我想通过dependency injection使用IUrlHelper,以便能够使用其function为不同的rest端点生成uris。 我似乎无法弄清楚如何从头开始创建UrlHelper,因为它在MVC 6中发生了变化,而MVC并没有自动在IoC控制器中提供该服务。 设置是我的控制器接受api模型转换器类的内部模型,并使用IUrlHelper(通过Depenedency Injection)。 如果有一个更好的替代IUrlHelper / UrlHelper,我可以用来为我的WebApi动作/控制器生成Uris,我愿意接受建议。

UrlHelper.Action包含不需要的附加参数

我在控制器ApplicationsController有一个方法,我需要在其中获取操作方法的基本URL: public ActionResult MyAction(string id) { var url = Url.Action(“MyAction”, “Applications”); … } 问题是这包括当前路由数据中的string id ,当我需要没有URL时(URL用于在基于URL的查找中从CMS获取内容)。 我试过传递null和new { }作为routeValues参数无济于事。 匹配路由如下(高于所有其他路由): routes.MapLowercaseRoute( name: “Applications”, url: “applications/{action}/{id}”, defaults: new { controller = “Applications”, action = “Index”, id = UrlParameter.Optional }); 我已经看到了其他一些问题,但它们似乎都没有可行的解决方案。 目前,我正在使用硬编码控制器中的路径; 但是,我希望能够将其抽象为动作filter,因此我需要能够生成URL。 是否有一种干净/传统的方法来防止这种行为?

ASP.Net Core 2.0:无需请求即可创建UrlHelper

我正在为后台工作者创建一个UrlHelper来创建回调url,这意味着它不是正常请求的一部分,我可以通过DI请求它。 在ASP.Net 5中,我可以创建一个HttpRequest,并为它提供与构建我的应用程序相同的HttpConfiguration,但在ASP.Net Core 2.0中,UrlHelper依赖于完整的ActionContext,这有点难以制作。 我有一个工作原型,但它正在使用一个讨厌的黑客来从应用程序启动过程中走私路由数据。 有一个更好的方法吗? public class Capture { public IRouter Router { get; set; } } public static class Ext { // Step 1: Inject smuggler when building web host public static IWebHostBuilder SniffRouteData(this IWebHostBuilder builder) { return builder.ConfigureServices(svc => svc.AddSingleton()); } // Step 2: Swipe the route data in application startup […]