gpt4 book ai didi

c# - 访问当前的 RouteContext

转载 作者:太空狗 更新时间:2023-10-30 01:03:56 25 4
gpt4 key购买 nike

在 MVC 5 I 中,您可以使用 HttpContext.Current 访问 HttpContext。访问 HttpContext 或更好的方法是什么,只有当前的 RouteContext

最佳答案

RouteContext 不是您通常想要访问的对象。 MVC 使用它来发出路由是否已处理的信号,因此不会流动。您可能想要访问 RouteData

这里有几种访问方式:

在 Controller 上,您可以访问 - this.ActionContext.RouteDataHttpContext.Current 等效 this.ActionContext.HttpContext 或直接访问this.HttpContext

ActionFilter 中,您可以通过方法参数访问它们:

public void OnActionExecuting(ActionExecutingContext context)
{
var routeData = context.RouteData;
var httpContext = context.HttpContext;
...
}

您可以访问 DI 系统的任何其他地方(比如服务的构造函数,或者当您可以直接访问服务提供者时)您可以获取当前请求的 ActionContext 但请注意,这仅当您在请求范围内并且您传入的服务提供商在请求范围内时才有效。

public MyService(IScopedInstance<ActionContext> contextAccessor)
{
_httpContext = contextAccessor.Value.HttpContext;
_routeData = contextAccessor.Value.RouteData;
}

注意:您也可以编写自己的“访问器”,如果您希望它只是一个具有 get/set 属性的简单类,并注册为 Scoped 服务。

关于c# - 访问当前的 RouteContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com