goo*_*ate 5 c# asp.net-mvc httpcontext
我的控制器使用了这样的声明(不确定订单是否重要)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
Run Code Online (Sandbox Code Playgroud)
我试图访问HTTPContext并注意到我甚至无法获得HTTPContext.Current
看起来有两个HTTPContext变量,而MVC就是先例.我必须完全限定对象的命名空间才能使应用程序编译.
Pau*_*ner 16
System.Web.HttpContext是一种具有静态Current属性的类型,您可以使用该属性来获取当前上下文.
没有System.Web.Mvc.HttpContext类型.您可能看到的是HttpContext该Controller类型所暴露的属性.此属性为您提供控制器当前正在执行的上下文,并充当获取"当前"上下文的方法.它被认为是优越的,因为你可以为测试你的控制器注入一个假的上下文,而它很难伪造HttpContext.Current.
虽然不完全相关,但使用顺序并不重要:它们都被检查,如果找到两种可能的类型,编译器将抛出关于歧义的异常.重要的是你是否在命名空间声明的内部或外部声明你的使用.编译器首先检查"内部"上下文,这样如果在命名空间中声明类型,则首先检查命名空间内的using语句中的类型,并优先于您自己的类型.如果将using语句移到命名空间之外,则命名空间中的类型将优先.