Fre*_*rik 7 c# api urlhelper asp.net-core
我对ASP.NET Core相当陌生,现在我正试图了解UrlHelper的总体工作方式。
在我的控制器中,我想为同一控制器中的另一个动作创建一个绝对URL,例如http://localhost:PORT/api/controller/action。现在的问题是,我该怎么办?
我尝试了以下方法:
var urlHelper = new UrlHelper(new ActionContext());
var url = urlHelper.Action("ACTION", "CONTROLLER");
Run Code Online (Sandbox Code Playgroud)
此外,这些不同的上下文是ActionContext什么样的?
pok*_*oke 19
您真的不应该创造UrlHelper自己。无论您当前处于什么上下文中,都有可能已经有一个IUrlHelper实例:
ControllerBase.Url 在控制器内部。PageModel.Url 在剃刀视图中。ViewComponent.Url 在视图组件中。因此,您可以访问this.Url以获取URL助手。
如果您发现自己不存在这种情况,例如在实现自己的服务时,则可以始终与IUrlHelperFactory一起注入,IActionContextAccessor以首先获取当前操作上下文,然后为其创建URL帮助器。
至于什么,ActionContext基本上是一个对象,它包含各种值,这些值标识在其中处理当前请求的当前MVC操作上下文。因此,它包含有关实际请求,已解析的控制器和操作或有关绑定模型对象的模型状态的信息。它基本上是的扩展HttpContext,还包含MVC特定的信息。
如果您运行的是ASP.NET Core 2.2或更高版本,则也可以在服务内部使用,LinkGenerator而不是IUrlHelper内部,这与通过构造助手相比,提供了一种更简单的生成URL的方法IUrlHelperFactory。
| 归档时间: |
|
| 查看次数: |
5167 次 |
| 最近记录: |