【问题标题】:strong-typed profile values in ASP.NET membership (MVC)ASP.NET 成员资格 (MVC) 中的强类型配置文件值
【发布时间】:2011-11-28 01:06:36
【问题描述】:

多年来,我一直在使用基于成员身份登录的 ASP.NET MVC,一切正常(现在是 MVC3,但自第一个版本 MVC1 以来成员身份没有改变)。现在我需要在配置文件中添加一个值(只有一个值,很少使用 - 所以它不保证自定义成员资格提供程序或自定义表)

我通过profile.SetPropertyValue("myprop") 让它工作,但我真的想让profile.myprop 工作。有可能吗?

我看到一些建议使用自定义类 MyProfile : ProfileBase 并将 myprop 作为该类的属性。出于某种原因,将 ProfileBase.Create(currentUser.UserName) 转换为 MyProfile 会给我一个错误(非法转换)。

在某个地方是否有一个带有 Profile 的 ASP MVC 应用程序示例,类似于 ScottGu 的 Old Post

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-membership strong-typing asp.net-profiles


    【解决方案1】:

    Joel Spolsky 对这个问题有很好的回答 on this post。你基本上是在正确的轨道上。

    如果您收到非法转换错误,很可能是由于配置文件中的问题。确保包括在内;更具体地说是<profile defaultProvider="SqlProvider" inherits="YourNamespace.AccountProfile"> 部分。

    <profile defaultProvider="SqlProvider" inherits="YourNamespace.AccountProfile">
        <providers>
             <clear />
             <add name="SqlProvider"
                  type="System.Web.Profile.SqlProfileProvider"
                  connectionStringName="sqlServerMembership" />
        </providers>
    </profile>
    

    【讨论】:

    • 嗯,这正是我在第三段中提到的帖子 :) 但是当我将 ProfileBase.Create 转换为 MyProfile 类时出现转换错误...
    • 是的,就是这样。不知道我是如何错过原始帖子中的“继承”属性的。可能,我正在编写不适用于 Web 项目的 MSDN 文档中的 web.config。此外,配置文件属性应该在类中;不在网络配置中。最后,在我的情况下(我认为这很常见),我正在填充配置文件属性,就像在注册操作中一样。奇怪的是,用户当时没有登录(即使在SetAuthCookie() 调用之后。因此,我没有使用静态CurrentUser 属性,而是创建了静态NamedUser(string userName) 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多