【问题标题】:Where to store string constants in my ASP.NET MVC app?在我的 ASP.NET MVC 应用程序中存储字符串常量的位置?
【发布时间】:2014-01-30 18:56:29
【问题描述】:

具体来说,我有一个电话号码用于一堆视图(和几个操作),我想把它集中在某个地方以防它发生变化。 web.config 是否足够好?有更好的地方吗?理想情况下,如果值发生变化,我不必重新编译。谢谢!

更新:到目前为止,我最喜欢局部视图,主要原因是没有重新编译,没有将其添加到视图模型中。我探索的另一个选项是 global.asax 中的 Application_Start 并使用 Application 字典(尽管听起来在 mvc 中不赞成使用该字典)。需要注意的一件事是,我还需要在某些操作中使用此数字。还有什么想法/意见吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-views


    【解决方案1】:

    毫无疑问,您是否想要访问您的 web.config 文件的视图。

    如果这是在您的视图中的许多地方出现的东西并且需要静态设置变量,那么制作一个局部视图来显示数字,并多次调用局部视图。

    优点是您将其保留在可重复使用的区域中,因此如果您更改一次,它会随处更改,而且您不会通过让您的视图调用它不应该有访问权限。更新部分也不需要重新编译。

    /Shared/_PhoneNumberPartial.cshtml

    <span>555-1234</span>
    

    在视图中使用

    <div>Phone Number<br/>
     @Html.Partial("_PhoneNumberPartial")
    </div>
    

    【讨论】:

      【解决方案2】:

      对于这种情况,我会将其保存在类文件中。但最好的解决方案取决于项目、以后的规模等等。

      【讨论】:

        【解决方案3】:

        对于电话号码之类的东西,我会将其放入某种数据存储中。如果您不需要完整的数据库,请考虑一些简单的东西,例如基于文件的存储,甚至是简单的 *.json 或 *.xml 文件,最好在 AppData 文件夹中。但是,如果您这样做,您应该通过 ViewModel 将其传递给您的视图,并让您的控制器或其他方法从您的数据存储中进行实际读取。视图不应直接访问这些。

        我发现 web.config 最适合配置设置。毕竟是一个配置文件。这不是放置内容的最佳位置。您的电话号码是内容,对我而言,内容应位于动态且结构化的位置。

        【讨论】:

          【解决方案4】:

          您可以在网络配置中将电话号码添加到appSetting key/value,如下所示:

          <appSettings>
               <add key="PhoneNum" value="1234567890"/>
           </appSettings>
          

          那你就可以用了

          using System.Configuration;
          string Phone = ConfigurationManager.AppSettings["PhoneNum"].ToString();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-04-19
            • 2014-03-05
            • 1970-01-01
            • 1970-01-01
            • 2010-11-01
            • 2011-02-26
            • 2020-08-08
            • 1970-01-01
            相关资源
            最近更新 更多