【发布时间】:2012-06-22 01:01:07
【问题描述】:
我有一个我在 MVC 3 中构建的系统,该系统目前提供一个年度提交周期,其中系统通过与存储在 web.config 作为 AppSettings 的日期相关的七个步骤进行。然而,每年,为了适应最终用户,我总是不得不在之前的步骤之间来回滚动系统。我想让管理员无需联系开发人员即可控制系统状态。最好的方法是什么?
我计划构建一个具有适当验证功能的页面,让管理员可以设置日期。我已经考虑了如何存储这些日期的几个选项,但它们似乎都不正确。我们的整个权限系统都使用这些日期,并且页面上的各种文本会根据我们当前所处的时间段打开和关闭。
到目前为止,我提出了两个选择:
选项 1:创建数据库表——这是我的第一个想法。我已经在 global.asax 中的 MvcApplication 类上设置了属性,并将它们从数据库中提取出来。使用惰性加载器,我可以在第一次需要时设置属性。但是,当它们在数据库中更改时,我没有办法强制系统“重置”并读取日期更改。如果我在 Begin_Request() 上执行此操作,我会不断打开连接并重置 Web 浏览器在服务器上打开的每个文件的属性,无论它是否是静态内容。
每次我需要其中一个日期时,我都可以直接从数据库中获取日期,但是我不得不重做很多功能以减少重复的数据库调用。我想缓存每个请求的日期,只在需要时才拉取它们,
选项 2:允许通过应用程序编辑配置文件 – 我已经查找了如何使用 split the web.config file,因此我可以拥有一个仅包含 appSettings 的单独文件。然后我可以update the new config file from a controller action。我认为这会很好地工作,并且不需要我重写任何现有功能,但感觉就像我会在代码中引入一个糟糕的设计模式。
【问题讨论】:
-
你没有真正说出最终的结果是什么吗?您只是想根据日期范围更改内容吗?如果是这样,请从您的日期中删除年份部分,在数据库中有一个开始日期、结束日期和内容,并根据 x 和 y 之间的时间加载内容。给他们一个页面来改变日期和月份???但只是在这里猜测实际结果是什么
-
web.config 中的日期已经控制了一个复杂的工作流程过程,该过程会随着工作流程的进行打开和关闭功能。这部分已经实现,但是开发人员控制着这个过程。我们需要更改系统,以便管理员可以在我们不参与的情况下对其进行控制。
标签: asp.net-mvc asp.net-mvc-3 web-config global-asax