Ema*_*a.H 58 c# asp.net-mvc razor asp.net-mvc-4
我无法使用C#4.5访问我的项目MVC4上的HttpContext.Current
我在我的项目中添加了对System.Web的引用,并在控制器页面上添加了using指令...
但我只能访问currentHandler ......
var context = HttpContext.CurrentHandler; //Current
Run Code Online (Sandbox Code Playgroud)
是否HttpContext.Current
在C#4.5上弃用?
我看过这个帮助页面:http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx
Dar*_*ren 125
您是否已将System.Web
组件包含在应用程序中?
using System.Web;
Run Code Online (Sandbox Code Playgroud)
如果没有,请尝试指定System.Web
名称空间,例如:
System.Web.HttpContext.Current
Run Code Online (Sandbox Code Playgroud)
And*_*rei 34
这是因为你指的是名为的控制器的属性HttpContext
.要访问当前上下文,请使用完整的类名:
System.Web.HttpContext.Current
Run Code Online (Sandbox Code Playgroud)
但是,强烈建议不要在ASP.NET MVC中访问此类上下文,所以是的,您可以将其System.Web.HttpContext.Current
视为在ASP.NET MVC中被弃用.访问当前上下文的正确方法是
this.ControllerContext.HttpContext
Run Code Online (Sandbox Code Playgroud)
或者如果你在控制器内部,只需使用成员
this.HttpContext
Run Code Online (Sandbox Code Playgroud)
添加一点以减轻这里的混乱。尽管 Darren Davies(已接受)的答案更直接,但我认为 Andrei 的答案是MVC应用程序的更好方法。
Andrei 的回答意味着您可以HttpContext
像使用System.Web.HttpContext.Current
. 例如,如果您想这样做:
System.Web.HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
你应该这样做:
HttpContext.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
两者都实现了相同的结果,但(再次)就MVC 而言,更推荐后者。
可以在此处找到有关此问题的另一个很好且直接的信息:MVC ASP.NET 中的 HttpContext.Current 和 Controller.Context 之间的差异。
归档时间: |
|
查看次数: |
103213 次 |
最近记录: |