从 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 5 中访问 AspNetUserRoles 表