从 ASP.Net MVC 视图访问应用程序设置

Posted

技术标签:

【中文标题】从 ASP.Net MVC 视图访问应用程序设置【英文标题】:Access application settings from ASP.Net MVC View 【发布时间】:2010-11-06 04:47:06 【问题描述】:

在 ASP.Net MVC 1.0 应用程序中,是否可以从我的视图(aspx 页面)内部访问应用程序设置(MyProject.Properties.Settings.Default.*)?

我试过了,但智能感知和编译器不喜欢它。它说由于保护级别而无法访问。

【问题讨论】:

另一个问题是:是否应该允许视图从配置中读取任何内容? 您的相关问题(在Haack的回答中的评论中提到):您需要打开设置文件,在右上角您可以设置可访问性(内部与公共) 【参考方案1】:

我遇到了与 Saajid Ismail 类似的问题,我的设置位于 namespace.Properties.Settings.Default.Setting 中,因为它们是强类型的。

为了让它们可以访问,我只需要更改访问修饰符

【讨论】:

【参考方案2】:

你的视图应该只负责渲染控制器给它的数据。它的职责是布局。因此,我建议您在 Controller 操作中将应用程序数据传递给视图。

话虽如此,您的问题的技术答案是 ViewPage 派生自 Page,因此您可以简单地这样做:

<%= Context.Application["setting"] %>

但是,我不推荐它。

【讨论】:

谢谢菲尔。你的解释对我来说很有意义。我正在实现一个 PhotoGaller 类型的服务,并在 web.config 中定义了默认图像大小。我想向用户显示这些尺寸,以便他们了解他们的图像需要符合某些尺寸,否则它将被调整大小/拒绝。因此,在我看来,这纯粹是出于展示目的。我会将这些信息从控制器传递到我的视图。谢谢。, 一个相关的问题是 - 为什么我不能从我的视图中访问强类型设置类。我指的是settings.settings文件,一般通过MyProject.Properties.Settings.Default.StronglyTypedSetting访问。我知道我不应该这样做——我明白这一点。我想了解为什么编译器不让我访问它。设置类被标记为内部,我试图从同一个项目中访问它,据我所知,应该没有问题.. 但是,如果设置中的信息具有更全局的性质——例如应用程序版本号——并且该信息将由一个或多个母版页显示,那么这不是控制器相关责任。在 HttpHandler 或 HttpModule 实现中处理这个更有意义吗?

以上是关于从 ASP.Net MVC 视图访问应用程序设置的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 和组件架构

为 ASP.NET MVC 项目设置数据访问的最佳方式是啥?

如何在 ASP.NET MVC 5 中访问 AspNetUserRoles 表

asp.net mvc 在视图和控制器之间传递参数

从 Razor View-MVC3 ASP.NET 中的 Web.config 访问键值

asp.net MVC - 我可以从类库中引用视图吗?