WebSecurity.CreateUserAndAccount propertyValues [英] WebSecurity.CreateUserAndAccount propertyValues

查看:152
本文介绍了WebSecurity.CreateUserAndAccount propertyValues的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在写一个MVC 4 C#.NET 4.5的网站

I'm writing an mvc 4 c# .net 4.5 website

我想创建一个新的公司对象,并注册链接到该公司的新用户。

I want to create a new company object and register a new user that is linked to that company.

我的帐户模式是:

    [Table("UserProfile")]
    public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string EmailAddress { get; set; }
        public string PhoneNumber { get; set; }
        public bool MarketingEmailOptin { get; set; }
        public bool isDisabled { get; set; }
        public virtual Company CompanyICanEdit { get; set; } 
    }

如果我叫下面的它增加了用户不错,但都是空的CompanyICanEdit领域:

If i call the following it adds the user fine but has null for the CompanyICanEdit field:

WebSecurity.CreateUserAndAccount(addCompanyViewModel.User.UserName,
                                 addCompanyViewModel.User.Password,
                                 propertyValues: new
                                 {
                                   FirstName = addCompanyViewModel.User.FirstName,
                                   LastName = addCompanyViewModel.User.LastName,
                                   EmailAddress = addCompanyViewModel.User.EmailAddress,
                                   PhoneNumber = addCompanyViewModel.User.PhoneNumber,
                                   MarketingEmailOptin = addCompanyViewModel.User.MarketingEmailOptin,
                                   isDisabled = false
                                 });

这是我所期望的,因为我并没有使用任何事情。

which i would expect as i am not assigning it anything.

我已经尝试添加(myCompany的是一家公司的对象):

i have tried adding (mycompany is a company object):

    WebSecurity.CreateUserAndAccount(addCompanyViewModel.User.UserName,
                                 addCompanyViewModel.User.Password,
                                 propertyValues: new
                                 {
                                   FirstName = addCompanyViewModel.User.FirstName,
                                   LastName = addCompanyViewModel.User.LastName,
                                   EmailAddress = addCompanyViewModel.User.EmailAddress,
                                   PhoneNumber = addCompanyViewModel.User.PhoneNumber,
                                   MarketingEmailOptin = addCompanyViewModel.User.MarketingEmailOptin,
                                   isDisabled = false,
                                   CompanyICanEdit = mycompany
                                 });

但我得到一个错误说不能匹配的类型。

But i get an error saying it can't match the type.

我怎么去,这样的CompanyICanEdit包含myCompany中的CompanyId值注册用户?

How do i go about registering the user so that the CompanyICanEdit contains the CompanyId value of mycompany?

任何帮助将AP preciated。谢谢

Any help will be appreciated. thanks

推荐答案

从来没有制定出如何做到这一点的1行走,用如果任何人有同样的问题,到底下面传开了。

Never worked out how to do it in 1 go, got round it by the following in the end if anyone has the same problem.

//
// POST: /BusinessManager/ManageCompanies/Add
[HttpPost]
public ActionResult Add(AddCompanyViewModel addCompanyViewModel)
{
    if (ModelState.IsValid)
    {
        // Create company and attempt to register the user
        try
        {
            WebSecurity.CreateUserAndAccount(addCompanyViewModel.User.UserName,
                                                addCompanyViewModel.User.Password,
                                                propertyValues: new
                                                {
                                                    FirstName = addCompanyViewModel.User.FirstName,
                                                    LastName = addCompanyViewModel.User.LastName,
                                                    EmailAddress = addCompanyViewModel.User.EmailAddress,
                                                    PhoneNumber = addCompanyViewModel.User.PhoneNumber,
                                                    MarketingEmailOptin = addCompanyViewModel.User.MarketingEmailOptin,
                                                    isDisabled = false
                                                });

            db.Companies.Add(addCompanyViewModel.Company);

            var newuser = db.UserProfiles.FirstOrDefault(u => u.UserName == addCompanyViewModel.User.UserName);
            if (newuser != null)
            {
                newuser.CompanyICanEdit = addCompanyViewModel.Company;
                db.Entry(newuser).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            else
            {
                ModelState.AddModelError("", "New user wasn't added");
            }                     
        }
        catch (MembershipCreateUserException e)
        {
            ModelState.AddModelError("", Mywebsite.Controllers.AccountController.ErrorCodeToString(e.StatusCode));
        }

    }

    return View(addCompanyViewModel);
}

这篇关于WebSecurity.CreateUserAndAccount propertyValues的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆