Asp.net mvc ASP.MVC应用程序常量,最佳/最优雅的方法是什么?
简单的问题真的 我只是在寻找社区支持什么是最有效的架构 比如,下面的例子:Asp.net mvc ASP.MVC应用程序常量,最佳/最优雅的方法是什么?,asp.net-mvc,asp.net-mvc-3,architecture,constants,Asp.net Mvc,Asp.net Mvc 3,Architecture,Constants,简单的问题真的 我只是在寻找社区支持什么是最有效的架构 比如,下面的例子:TempData[“MySetting”]?我应该在哪里存储“MySetting”?应该是吗 在单独的类中,以便访问TempData[Config.MySetting] 在web.config中,以便访问是TempData[ConfigurationManager.AppSettings[“MySetting”]; 内联,将其保留为字符串TempData[“MySetting”]; 在DB中的某些常量表中,以便 var m
TempData[“MySetting”]
?我应该在哪里存储“MySetting”?应该是吗
TempData[Config.MySetting]代码>
TempData[ConfigurationManager.AppSettings[“MySetting”];
TempData[“MySetting”];
var mySetting = (string)_db.GetConstant("MySetting");
TempData[mySetting];
谢谢。您的设置会改变吗?取决于您部署的环境?如果是,那么您肯定希望将它们存储在Web.config文件中(如果不是像两个键/值对那样简单,您甚至可以创建一个自定义部分) 如果您使用的所有环境(包括您自己的开发箱、服务器和您可能想要部署的任何测试/登台机器)上的它们都是相同的,那么我会选择第一个选项:声明一个带有几个常量的类 至于将它们存储在数据库中,这实际上取决于什么类型的设置。如果您希望它们是网站的每个用户,那么您可能最终会将它们存储在数据库中。或者,如果您希望能够更改它们(在网站运行时编辑web.config文件不是最好的主意)
我会尽量避免让它保持原样,保持内联状态。您可以尝试以下方法:
public static class Constants
{
public static class Actions
{
public const string Administration = "Administration";
}
}
在您的特定情况下,您应该在
TempData
周围创建一个包装器,它将您的数据作为属性公开。对TempData
的所有访问都应该隐藏在该包装器中。在这种情况下,的所有用法“MySetting”
最多只能有两个。如果只有一个用法,则无需执行任何操作。如果有两个用法,则将的“MySetting”
定义为private const
字段
简言之:
public static class TempDataWrapper
{
private const string _mySettingName = "MySetting";
public int MySetting
{
get { return (int) TempData[_mySettingName];}
set { TempData[_mySettingName] = value;}
}
}
为简洁起见,我们这里不讨论耦合(紧密)和错误处理(无)。我同意:
public static class Config
{
public static readonly string MyValue = "SomeValue";
}
更多关于好吧,假设您的常量确实是常量,它们在运行时不会更改。在这种情况下,您使用
常量
字段修饰符,在某些情况下使用静态只读
修饰符设置常量值
public class MyConstants {
public const string MyConstantNameValue = "Value";
public const int MyConstantNameValue2 = 123;
// prevent the class to be instantiated
protected MyConstants() { }
}
正如您所见,您没有将MyConstants
定义为静态类,因为如果您需要另一组特定命名空间的常量(例如,加上全局常量),您可以扩展这些常量
你提到的有道理。除了1-4之外还有其他选项吗?如何创建自定义部分(不知道)-请更新答案好吗?感谢您花时间查看此URL,了解如何为Web创建自定义节的详细说明。配置:至于其他选项,这实际上取决于您要存储的内容以及您的特定应用程序。谢谢。我的问题比较笼统,而不是具体。如何处理不同的问题MVC应用程序中的ent常量?与任何其他应用程序中的方式相同。它们是常量-应该硬编码。所有其他内容都取决于使用情况,并且仅取决于使用情况。在这个问题上没有通用方法。同样,您可以将其定义为部分并扩展而不进行子分类。谢谢。如果这些部分在同一个塞姆布雷,是的,你可以。
public class MyConstantsPlusSpecificNamespaceConstants : MyConstants {
public const string MySpecificConstantName = "Value2";
}