按照these说明,我可以为配置文件定义自定义属性,将其添加到Web.Config:
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add
name="DefaultProfileProvider"
type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
connectionStringName="MYCONEXION"
applicationName="MyApp" />
</providers>
<properties>
<add name="IdRole" type="Integer" />
<add name="IdUser" type="Integer" />
</properties>
</profile>
我发现的问题是,当块代码嵌入到脚本Profile.IdRole
中时,我可以访问此属性(<script language="vb" runat="server">
)。
当Block代码在CodeBehind中时,Profile看起来实际上是一个不同的对象/类。此外,如果我将代码从CodeBehind移动到嵌入块,我在访问其他一些类和方法时遇到问题,例如Security.Cryptography.SHA1CryptoServiceProvider
或我自己项目中模块的函数。
我想在从CodeBehind访问时,我错过了Profile.IdRole
的一些前缀,你能帮忙吗?
错误信息:
在CodeBehind中,当我使用Profile.IdRole
时,我收到错误 IdRole不是个人资料的成员。
如果我使用HttpContext.Current.Profile.IdRole
我得 IdRole不是System.Web.Profile.ProfileBase的成员
当我在嵌入代码中使用Profile.IdRole
并将鼠标指向它时,我得到了一个tooltop:受保护的ReadOnly属性配置文件为ProfileCommon ,现在我看到了ReadOnly I&#39;我不确定我是否遵循了正确的文档...帮助?
谢谢
答案 0 :(得分:0)
ProfileCommon类是一个继承自ProfileBase的强类型类。它在运行时创建,并使用Web配置文件中定义的自定义属性信息。由于它是在运行时创建的,因此无法从代码隐藏中直接访问它。
从代码隐藏,访问当前用户的个人资料,使用
HttpContext.Current.Profile
要访问其他用户的个人资料,请使用
System.Web.Profile.ProfileBase.Create(username)
两个函数都返回ProfileBase类的实例。由于未使用自定义属性进行强类型输入,因此您必须使用GetPropertyValue
和SetPropertyValue
方法,因此
Dim profile as ProfileBase = ProfileBase.Create("someuser")
profile.GetPropertyValue("IdRole")
profile.SetPropertyValue("IdRole", 42)