在 MVC 控制器中,Page.Application(在 .aspx.cs 页面中)的等价物是啥

Posted

技术标签:

【中文标题】在 MVC 控制器中,Page.Application(在 .aspx.cs 页面中)的等价物是啥【英文标题】:What is the equivalent of Page.Application (in .aspx.cs page) In MVC Controller在 MVC 控制器中,Page.Application(在 .aspx.cs 页面中)的等价物是什么 【发布时间】:2017-08-29 03:08:30 【问题描述】:

我正在开发 MVC Web 应用程序,我正在使用 .Dlls。的一些其他项目。同样的 .dll 也在我的另一个 Web 应用程序中使用,该应用程序是在 WebForms (.aspx) 页面中创建的。

现在我的问题是: .dll 中的某些函数接受 Page.Application 作为参数。在 .aspx 页面中运行良好。但现在我想在 MVC 应用程序中使用相同的功能。但是在MVC controller 我无法访问Page.Application

所以请有人可以帮助我,我如何在 MVC 控制器中访问 Page.Application 以及在 MVC 控制器中是否有任何等效的 Page.Application

谢谢,

编辑:- 我不是在问Application variable - 我在问Page.Application 这是HttpApplicationState 的对象。我想要这个 HttpApplicationState 在 MVC 控制器中

【问题讨论】:

您可以从System.Web.HttpContext.Current.Application 访问Application 变量,因为MVC 控制器类不是从System.Web.UI.Page 派生的,不像webforms 类那样。 @TetsuyaYamamoto - 这与 Application variable 无关 - Page.ApplicationHttpApplicationState 的对象。我想要这个 HttpApplicationState 在 MVC 控制器中 ASP.NET MVC 中没有应用程序状态。您在 webform 中使用的 DLL 不适用,您应该使用 viewbag 或 viewdata,因为 MVC 是无状态的,与由 viewstate 管理的 webforms 不同。 您可以在派生HttpApplicationState 类的模型类上创建类似的属性,例如:public static HttpApplicationState Application get return HttpContext.Current.Application; 。请注意,SessionViewBag/ViewData 方法比应用程序变量更受欢迎。 【参考方案1】:

你可以使用:

HttpContext.Application

你必须添加:

using System.Web;

【讨论】:

【参考方案2】:

在 mvc 中,没有 webform 中的页面生命周期。每件事都来自路由机制。

在 page.application 中,它获取当前 Web 请求的 HttpApplicationState 对象。

从 MVC3 开始,它支持 mvc 中的 HttpApplicationState 变量。

检查这个答案:

HttpApplicationState not available in an MVC controller

Does asp.net MVC have Application variables?

【讨论】:

完美 - 链接有答案 - HttpApplicationState application = HttpContext.ApplicationInstance.Application

以上是关于在 MVC 控制器中,Page.Application(在 .aspx.cs 页面中)的等价物是啥的主要内容,如果未能解决你的问题,请参考以下文章

在 POST 数据中从 Api 控制器重定向到 MVC 控制器

MVC - 我需要在视图中使用控制器吗?

MVC 设计 - 我可以/应该/必须在 CodeIgniter MVC Web 应用程序项目中拥有多少个控制器?

在 mvc 控制器中从 jquery 接收复杂对象

html 表单发布到 mvc 控制器

如何在 MVC 控制器中使用消息框?