C# 自定义配置文件提供程序:设置属性'';找不到-MVC3

C# 自定义配置文件提供程序:设置属性'';找不到-MVC3,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我在尝试编辑/更新用户配置文件时遇到此问题。基本上,当用户注册时,他们的bool调用“AuthorizedTeamMember”设置为false。然后,他们的团队经理可以将其设置为true以授权用户 但是,当单击“授权”按钮授权用户时,我得到以下错误: The settings property 'AuthorizedTeamMember' was not found. 我已经仔细考虑了一下,想找到一个解决办法,但似乎什么都不管用。在点击HttpPost上的“AuthorizePlayer”方

我在尝试编辑/更新用户配置文件时遇到此问题。基本上,当用户注册时,他们的bool调用“AuthorizedTeamMember”设置为false。然后,他们的团队经理可以将其设置为true以授权用户

但是,当单击“授权”按钮授权用户时,我得到以下错误:

The settings property 'AuthorizedTeamMember' was not found.
我已经仔细考虑了一下,想找到一个解决办法,但似乎什么都不管用。在点击HttpPost上的“AuthorizePlayer”方法之前,似乎出现了错误

无论如何,这是我的自定义配置文件提供商:

namespace iConfirm.Models
{
    public class TeamPlayer : ProfileBase
    {
        [Display(Name = "First Name")]
        public virtual string FirstName
        {
            get
            {
                return (this.GetPropertyValue("FirstName").ToString());
            }
            set
            {
                this.SetPropertyValue("FirstName", value);
            }
        }

        [Display(Name = "Last Name")]
        public virtual string LastName
        {
            get
            {
                return (this.GetPropertyValue("LastName").ToString());
            }
            set
            {
                this.SetPropertyValue("LastName", value);
            }
        }
        [Display(Name = "Date Of Birth")]
        public virtual string DateOfBirth 
        {
            get
            {
                return (this.GetPropertyValue("DateOfBirth").ToString());
            }
            set
            {
                this.SetPropertyValue("DateOfBirth", value);
            }
        }
        [Display(Name = "Phone Number")]
        public virtual string PhoneNumber
        {
            get
            {
                return (this.GetPropertyValue("PhoneNumber").ToString());
            }
            set
            {
                this.SetPropertyValue("PhoneNumber", value);
            }
        }
        public virtual string TeamId
        {
            get
            {
                return (this.GetPropertyValue("TeamId").ToString());
            }
            set
            {
                this.SetPropertyValue("TeamId", value);
            }
        }
        public virtual bool AuthorizedTeamMember
        {
            get
            {
                return (bool)base["AuthorizedTeamMember"]; //<-- Errors here on post
            }
            set
            {
                base["AuthorizedTeamMember"] = value;
            }
        }
        public static TeamPlayer GetProfile(string username)
        {
            return Create(username) as TeamPlayer;
        }

        public static List<TeamPlayer> GetProfilesByTeam(int teamId)
        {
            //var profileList = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
            var profilesInTeam = Membership.GetAllUsers().Cast<MembershipUser>()
            .Select(user => TeamPlayer.Create(user.UserName, true) as TeamPlayer)
            .Where(profile => profile.GetPropertyValue("TeamId").ToString().Equals(teamId.ToString()))
            .ToList();

            return profilesInTeam;

        }
    }
}
        [HttpPost]
        public ActionResult AuthorizePlayer(TeamPlayer teamPlayer)
        {
            teamPlayer.AuthorizedTeamMember = true;
            var user = TeamPlayer.GetProfile(teamPlayer.UserName);
                user.FirstName = teamPlayer.FirstName; 
                user.LastName = teamPlayer.LastName;
                user.AuthorizedTeamMember = teamPlayer.AuthorizedTeamMember;
                user.DateOfBirth = teamPlayer.DateOfBirth;
                user.PhoneNumber = teamPlayer.PhoneNumber;
                user.Save();
            /*TeamPlayer _teamPlayer = TeamPlayer.Create(teamPlayer.UserName) as TeamPlayer;
            //var tempProfile = TeamPlayer.Create(teamPlayer.UserName) as TeamPlayer;
            _teamPlayer.AuthorizedTeamMember = true;
            _teamPlayer.Save();
            //Email user that they have been authorized*/
            return View("Index");
        }
@model iConfirm.Models.TeamPlayer
@{
    ViewBag.Title = "AuthorizePlayer";
    MembershipUser user = Membership.GetUser(Model.UserName);
}

<h2>AuthorizePlayer</h2>
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Authorize the following user?</legend>
        @Html.HiddenFor(model => model.AuthorizedTeamMember)
        <div class="display-label">
            Username
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.UserName)
        </div>
        <div class="display-label">
            Full Name
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.FirstName) @Html.DisplayFor(model => model.LastName)
        </div>
        <div class="display-label">
            Email
        </div>
        <div class="display-field">
            @user.Email
        </div>
        <div class="display-label">
            Telephone number
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.PhoneNumber)
        </div>
        <div class="display-label">
            Date of Birth
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.DateOfBirth)
        </div>

        <p>
            <input type="submit" value="Authorize" />
        </p>
    </fieldset>
}
最后是视图:

namespace iConfirm.Models
{
    public class TeamPlayer : ProfileBase
    {
        [Display(Name = "First Name")]
        public virtual string FirstName
        {
            get
            {
                return (this.GetPropertyValue("FirstName").ToString());
            }
            set
            {
                this.SetPropertyValue("FirstName", value);
            }
        }

        [Display(Name = "Last Name")]
        public virtual string LastName
        {
            get
            {
                return (this.GetPropertyValue("LastName").ToString());
            }
            set
            {
                this.SetPropertyValue("LastName", value);
            }
        }
        [Display(Name = "Date Of Birth")]
        public virtual string DateOfBirth 
        {
            get
            {
                return (this.GetPropertyValue("DateOfBirth").ToString());
            }
            set
            {
                this.SetPropertyValue("DateOfBirth", value);
            }
        }
        [Display(Name = "Phone Number")]
        public virtual string PhoneNumber
        {
            get
            {
                return (this.GetPropertyValue("PhoneNumber").ToString());
            }
            set
            {
                this.SetPropertyValue("PhoneNumber", value);
            }
        }
        public virtual string TeamId
        {
            get
            {
                return (this.GetPropertyValue("TeamId").ToString());
            }
            set
            {
                this.SetPropertyValue("TeamId", value);
            }
        }
        public virtual bool AuthorizedTeamMember
        {
            get
            {
                return (bool)base["AuthorizedTeamMember"]; //<-- Errors here on post
            }
            set
            {
                base["AuthorizedTeamMember"] = value;
            }
        }
        public static TeamPlayer GetProfile(string username)
        {
            return Create(username) as TeamPlayer;
        }

        public static List<TeamPlayer> GetProfilesByTeam(int teamId)
        {
            //var profileList = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
            var profilesInTeam = Membership.GetAllUsers().Cast<MembershipUser>()
            .Select(user => TeamPlayer.Create(user.UserName, true) as TeamPlayer)
            .Where(profile => profile.GetPropertyValue("TeamId").ToString().Equals(teamId.ToString()))
            .ToList();

            return profilesInTeam;

        }
    }
}
        [HttpPost]
        public ActionResult AuthorizePlayer(TeamPlayer teamPlayer)
        {
            teamPlayer.AuthorizedTeamMember = true;
            var user = TeamPlayer.GetProfile(teamPlayer.UserName);
                user.FirstName = teamPlayer.FirstName; 
                user.LastName = teamPlayer.LastName;
                user.AuthorizedTeamMember = teamPlayer.AuthorizedTeamMember;
                user.DateOfBirth = teamPlayer.DateOfBirth;
                user.PhoneNumber = teamPlayer.PhoneNumber;
                user.Save();
            /*TeamPlayer _teamPlayer = TeamPlayer.Create(teamPlayer.UserName) as TeamPlayer;
            //var tempProfile = TeamPlayer.Create(teamPlayer.UserName) as TeamPlayer;
            _teamPlayer.AuthorizedTeamMember = true;
            _teamPlayer.Save();
            //Email user that they have been authorized*/
            return View("Index");
        }
@model iConfirm.Models.TeamPlayer
@{
    ViewBag.Title = "AuthorizePlayer";
    MembershipUser user = Membership.GetUser(Model.UserName);
}

<h2>AuthorizePlayer</h2>
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Authorize the following user?</legend>
        @Html.HiddenFor(model => model.AuthorizedTeamMember)
        <div class="display-label">
            Username
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.UserName)
        </div>
        <div class="display-label">
            Full Name
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.FirstName) @Html.DisplayFor(model => model.LastName)
        </div>
        <div class="display-label">
            Email
        </div>
        <div class="display-field">
            @user.Email
        </div>
        <div class="display-label">
            Telephone number
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.PhoneNumber)
        </div>
        <div class="display-label">
            Date of Birth
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.DateOfBirth)
        </div>

        <p>
            <input type="submit" value="Authorize" />
        </p>
    </fieldset>
}
@model-iConfirm.Models.TeamPlayer
@{
ViewBag.Title=“授权玩家”;
MembershipUser=Membership.GetUser(Model.UserName);
}
授权玩家
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
是否授权以下用户?
@Html.HiddenFor(model=>model.AuthorizedTeamMember)
用户名
@DisplayFor(model=>model.UserName)
全名
@Html.DisplayFor(model=>model.FirstName)@Html.DisplayFor(model=>model.LastName)
电子邮件
@用户邮箱
电话号码
@DisplayFor(model=>model.PhoneNumber)
出生日期
@DisplayFor(model=>model.DateOfBirth)

}
任何帮助都将不胜感激


Alex可能遗漏了一些内容,但您使用

this.SetPropertyValue()

对于除base[“AuthorizedTeamMember”]=值之外的所有属性