首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET核心UrlHelper及其工作原理

ASP.NET核心UrlHelper及其工作原理
EN

Stack Overflow用户
提问于 2018-09-27 12:24:42
回答 1查看 17.5K关注 0票数 16

我对ASP.NET核心相当陌生,现在我正试图从总体上掌握UrlHelper的工作原理。

在我的控制器中,我想创建一个指向同一控制器中另一个操作的绝对网址,例如http://localhost:PORT/api/controller/action。现在的问题是,我该怎么做?

我已经尝试了以下几点:

代码语言:javascript
运行
AI代码解释
复制
var urlHelper = new UrlHelper(new ActionContext());
var url = urlHelper.Action("ACTION", "CONTROLLER");

此外,像ActionContext这样的不同上下文是什么

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 12:38:08

你真的不应该自己创建UrlHelper。无论您当前所处的上下文是什么,很可能已经有一个IUrlHelper实例可用:

所以很有可能,你可以直接访问this.Url来获取一个URL helper。

如果您发现自己处于不存在的情况下,例如在实现您自己的服务时,那么您可以始终将IUrlHelperFactoryIActionContextAccessor一起注入,以首先检索当前操作上下文,然后为其创建一个URL helper。

至于ActionContext是什么,它基本上是一个包含各种值的对象,这些值标识了当前正在处理的请求所在的当前MVC action上下文。因此,它包含有关实际请求、解析的控制器和操作的信息,或者关于绑定的模型对象的模型状态的信息。它基本上是对HttpContext的扩展,也包含特定于MVC的信息。

如果您运行的是ASP.NET Core2.2或更高版本,您还可以在服务中使用LinkGenerator而不是IUrlHelper,与通过IUrlHelperFactory构造帮助器相比,这为您提供了一种更容易生成URL的方法。

票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52536969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档