0

Web.config:

<profile enabled="true" defaultProvider="DefaultProfileProvider">
  <providers>
    <add name="DefaultProfileProvider" inherits="XCSN.Models.WebProfile" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>

ユーザーを作成し、プロファイルで名と姓のプロパティを割り当てようとしています。

    [Authorize(Roles = "Manager")]
    [HttpPost]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus;

            Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                Roles.AddUserToRole(model.UserName, model.Role);

                //add profile information
                var profile = WebProfile.GetProfile(model.UserName);
                profile.FirstName = model.FirstName;
                profile.LastName = model.LastName;
                profile.Save();

                return RedirectToAction("Index", "Account");
            }
            else
            {
                ModelState.AddModelError("", ErrorCodeToString(createStatus));
            }
        }

        ViewBag.RolesList = Roles.GetAllRoles().Select(x => new SelectListItem { Text = x, Value = x });
        // If we got this far, something failed, redisplay form
        return View(model);
    }


public class WebProfile : 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);
        }
    }

    public static WebProfile GetProfile(string username)
    {
        return Create(username) as WebProfile;
    }
}

次の行で失敗します:profile.FirstName = model.FirstName; WebProfile.GetProfile(model.UserName); nullを返しますが、理由がわかりません。

何か案は?

4

1 に答える 1

0

inherits = "XCSN.Models.WebProfile"は、タグではなくタグに含める必要があります。

このような:

<profile inherits="XCSN.Models.WebProfile" enabled="true" defaultProvider="DefaultProfileProvider">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>
于 2013-01-09T05:40:45.850 に答える