2012-05-25 69 views
2

我试图编辑/更新用户配置文件时遇到此问题。基本上当用户注册时,他们有一个布尔调用'AuthorizedTeamMember'设置为false。然后他们的团队经理可以将其设置为true以授权用户。自定义配置文件提供程序:设置属性''找不到 - MVC3

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

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> 
} 

任何帮助将不胜感激。

亚历

回答

0

可能缺少的东西,但是有你的使用

this.SetPropertyValue()

对于除碱[ “AuthorizedTeamMember”] =值的所有特性的原因;

相关问题