如何在ASP.NET MVC中从控制器访问HttpContext

4
在asp.net中,我该如何获取当前页面的httpcontext?
我尝试将相关控制器的httpcontext作为参数传递,但这样无法实现。我发现很多人描述了如何指定对象,但我无法找到任何关于如何将httpcontext添加到控制器中的信息(比如作为参数等)。
这种方法行不通。
    public class MovieController : Controller
    {
            public ActionResult Random(HttpContext mycontext)
        {

            RandomMovieViewmodel rmvm = new RandomMovieViewmodel();


            return View(rmvm);
        }

我如何访问上下文?也许我应该创建一个属性吗?


1
我应该创建一个属性吗?为什么?你是否在文档中检查了类的基本属性? - Selvin
嗯,查看HttpContext的文档? - s3j80
3
ASP.NET 涵盖了很多技术栈,例如 WebForms、MVC、Web API 和 ASP.NET Core。它们都以某种方式拥有“上下文(Context)”,但没有一种是将其作为操作参数传递的。您正在询问哪种技术栈? - Panagiotis Kanavos
嗯,你在查看HttpContext的文档吗?你是从哪个类继承的,它包含了Random方法,是从HttpContext还是Controller呢? - Selvin
我正在使用ASP.NET MVC。 - s3j80
显示剩余3条评论
1个回答

5

在这里,控制器定义非常重要。

例如,在.Net Core 2.2中,如果从ControllerBase派生的控制器中,HttpContext将作为属性公开。

我不确定您的环境或类定义,但在Asp.Net MVC中通常都是类似的。只需确保正确定义了您的控制器类即可。

更新

当您从Controller类派生时,HttpContext将作为属性公开。您可以直接使用它。

public class TestController : Controller
{
    public ActionResult Index()
    {
        var context = HttpContext;

        return View();
    }
}

我正在使用ASP.NET MVC。我不完全确定控制器类定义是什么,但我正在跟随一门课程,一切都应该没问题。 - s3j80
但我想问的是,是否有人知道如何访问该页面的HttpContext对象?这是一个有意义的问题吗?我能用参数做到吗? - s3j80
你能分享一下你的控制器定义的更多细节吗?如果你可以在问题中附上示例代码,那么理解问题会更容易些。 - Serdar
我真的很困惑,控制器定义是什么意思?它是从URL到控制器的路由吗? - s3j80
在你贴出的问题中,应该包含定义方法(动作)的控制器类。它应该像这样:public class TestController : ControllerBase - Serdar
啊,我看到我的控制器类继承自控制器。我会更新的。谢谢。 - s3j80

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接