真的很简单,
我只是在寻找社区支持,这在结构上最有效。
说,以下案例:TempData["MySetting"]
?我应该在哪里存储"MySetting"
?应该是
TempData[Config.MySetting];
TempData[ConfigurationManager.AppSettings["MySetting"];
TempData["MySetting"];
?在DB中的某些常量表中,以便
var mySetting = (string)_db.GetConstant("MySetting");
TempData[mySetting];
我不会处理选项4,只是为了图片的完整性。 那么你有什么建议和为什么?
修改 关于asp mvc中的常量而不是TempData情况,问题相当普遍。
感谢。
答案 0 :(得分:4)
在您的特定情况下,您应该在TempData
周围创建一个包装器,它会将您的数据公开为属性。对TempData
的所有访问都应隐藏在该包装内。在这种情况下,"MySetting"
的所有用法将限制为最多 2。如果只有一种用法,则无需执行任何操作。如果有两个 - 您将"MySetting"
定义为private const
字段。
简而言之:
public static class TempDataWrapper
{
private const string _mySettingName = "MySetting";
public int MySetting
{
get { return (int) TempData[_mySettingName];}
set { TempData[_mySettingName] = value;}
}
}
为了简洁起见,我们不处理耦合(紧密)和错误处理(没有)。
答案 1 :(得分:4)
我会选择:
public static class Config
{
public static readonly string MyValue = "SomeValue";
}
的更多信息
答案 2 :(得分:3)
您的设置是否更改?根据您部署的环境?如果是,那么你肯定希望将它们存储在Web.config文件中(如果它不像几个键/值对那么简单,你甚至可以创建一个自定义部分。)
如果它们在您使用的所有环境中都相同(包括您自己的开发盒,服务器以及您可能要部署的任何测试/暂存机),那么我会选择第一个选项:声明一个带有几个常数。
至于将它们存储在数据库中,它实际上取决于什么样的设置。如果您希望它们是您网站的每个用户,那么您最终可能会将它们存储在您的数据库中。或者如果您希望能够更改它们(在网站运行时编辑web.config文件不是最好的主意)。
我试着远离原样,内联。
答案 3 :(得分:3)
您可以尝试这种方法:
public static class Constants
{
public static class Actions
{
public const string Administration = "Administration";
}
}
答案 4 :(得分:1)
好吧,假设你的常量是真正的常量,它们不会在运行时改变。在这种情况下,您可以使用const
字段修饰符,在某些情况下使用static readonly
修饰符来设置常量值。
public class MyConstants {
public const string MyConstantNameValue = "Value";
public const int MyConstantNameValue2 = 123;
// prevent the class to be instantiated
protected MyConstants() { }
}
如您所见,您没有将MyConstants
定义为静态类,因为如果您需要另一组特定命名空间的常量(例如全局常量),则可以扩展常量。
public class MyConstantsPlusSpecificNamespaceConstants : MyConstants {
public const string MySpecificConstantName = "Value2";
}