MSDN相当模糊。
自定义数据字符串可以设置为 任何字符串值,并使用 customProviderData属性 添加配置元素以进行添加 个人资料。
这是MSDN式的说法自己解决这个问题。
从描述中可以看出,它只是简单的文本,您只是从web.config传递给自定义提供程序。但它不是那样的,这个字符串似乎构建了给定属性将保存的数据类型,我想知道具体格式是什么。
特别是,我有以下属性(还有一些属性,但我只是举例说明两个)
[SettingsAllowAnonymous(false)]
[CustomProviderData("NotificationTypes;nvarchar;255")]
public string NotificationTypes
{
get { return base["NotificationTypes"] as string ?? "Email"; }
set { base["NotificationTypes"] = value; }
}
[SettingsAllowAnonymous(false)]
[CustomProviderData("IssuesPageSize;int")]
public int IssuesPageSize
{
get { return base["IssuesPageSize"] as int? ?? 10; }
set { base["IssuesPageSize"] = value; }
}
这里,自定义数据似乎确定了字段的名称,db类型和db长度。我想知道这个属性是否可以保留默认值。
我的问题如下:
base[attrib]
实施中ProfileBase
是否可以为空?
如果我想设置默认值,我应该查看0
和string.Empty
吗?
关键是如果base[attrib]
不能为空,我不需要int?
强制转换,我应该检查0
,在这种情况下,并反对前一个string.Empty
。
也就是说,除非有一种“更快乐”的方式来设置默认值,就像在web.config中输入一样:
<add name="NotificationTypes" type="String" defaultValue="Email" customProviderData="NotificationTypes;nvarchar;255" />
我想我是在问我如何添加一个与上面<add/>
标签中的属性完全相同的属性,但是以编程方式添加。
答案 0 :(得分:1)
想出来补充一下:
static SharedMembershipProfile()
{
Properties["IssuesPageSize"].DefaultValue = 10;
Properties["NotificationTypes"].DefaultValue = "Email";
Properties["PreferredLocale"].DefaultValue = "en-US";
}
仍然想知道是否有更好的方法,如属性,或更多“自动连线”