不会只是插入数据库中

时间:2015-07-28 21:10:01

标签: c# asp.net-mvc linq

我遇到了一个问题,因为我无法创建/将用户信息投入数据库。它应该尽快插入OnSubmit(UsersAccount);所以它不会以任何方式证实它。

我得到了这个错误:

错误1:

  

参数1:无法转换   ' MentorOrdblind_MVC.Models.Konto.UsersAccount'至   ' MentorOrdblind_MVC.Models.Linq.User'

错误2:

  

最佳重载方法匹配   ' System.Data.Linq.Table.InsertOnSubmit(MentorOrdblind_MVC.Models.Linq.User)'   有一些无效的论点

KontoController.cs

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateUsers(UsersAccount UsersAccount)
{
    if (ModelState.IsValid)
    {
        var email = UsersAccount.Email;
        // Checking up whether there is a user with the email.
        var CreateAnAccount = db.Users.FirstOrDefault(b => b.Email == email);
        if (CreateAnAccount != null)
        {

            UsersAccount.Email = email;//email
            UsersAccount.PassWordHash = UsersAccount.PassWordHash;//password
            UsersAccount.Firstname = UsersAccount.Firstname;//firstname
            UsersAccount.Lastname = UsersAccount.Lastname;//lastname
            UsersAccount.PhoneNumber = UsersAccount.PhoneNumber;//phonenumber

            //true - False
            UsersAccount.Newsletter = Convert.ToBoolean(UsersAccount.Newsletter);//newsletter

            //which some Fk users have chosen.
            UsersAccount.fk_role = Convert.ToInt32(UsersAccount.Roles);// what's roles
            UsersAccount.fk_package = 0;//package
            UsersAccount.fk_sex = Convert.ToInt32(UsersAccount.Sexs);//sex
            UsersAccount.fk_area = Convert.ToInt32(UsersAccount.Areas);//area
            UsersAccount.fk_Professionals = Convert.ToInt32(UsersAccount.Professionals);//professional

            //age
            UsersAccount.age = Convert.ToDateTime(UsersAccount.age);

            //img users
            UsersAccount.img = "userimg.png";

            // Need to find out what role you have chosen,
            if (UsersAccount.fk_role == 6)
            {
                UsersAccount.Approved = false;
            }
            else
            {
                UsersAccount.Approved = true;
            }

            // should just content into the database.
            db.Users.InsertOnSubmit(UsersAccount);

            // must save the contents.
            db.SubmitChanges(); // save

            // send the person to the log in page.

        }
        else
        {
            //Fremviser en fejl besked hvis der findes en email.
            ViewBag.MessageError = "Denne brugere findes i vores system.";
        }
    }
    //return indhold til siden.
    return View();
}

UsersAccount.cs

public class UsersAccount
{
    [Key]
    public int UserId { get; set; }

    //email
    [Display(Name = "EmailAddress")]
    [DataType(DataType.EmailAddress)]
    [Required(ErrorMessage="Husk at skriv en email!")]
    public string Email { get; set; }

    //password
    [Display(Name = "PassWordHash")]
    [DataType(DataType.Password)]
    [Required(ErrorMessage="Husk at angiv en adgangskode!")]
    [MinLength(5, ErrorMessage="Den skal have midst 5 tegn!")]
    [MaxLength(30, ErrorMessage="Vi skal være sikker på du kan husk din kode!")]
    public string PassWordHash { get; set; }

    //fornavn
    [Required(ErrorMessage="Husk dit fornavn")]
    [DataType(DataType.Text)]
    [MinLength(2, ErrorMessage="Det skal være mere end 2 tegn!")]
    [MaxLength(20, ErrorMessage="Tilader ikke så langt navn")]
    public string Firstname { get; set; }

    //efternavn
    [Required(ErrorMessage="Husk dit efternavn")]
    [DataType(DataType.Text)]
    [MinLength(2, ErrorMessage="Det skal være mere end 2 tegn!")]
    [MaxLength(30, ErrorMessage="Kun et enkelt efternavn..")]
    public string Lastname { get; set; }

    //Om man er tilmeldt eller ej,
    public bool Newsletter { get; set; }

    //list som bruges til Område
    public int fk_area { get; set; }
    public List<Area> Areas { get; set; }

    //list som bruges til Hvilke køn man er?
    public int fk_sex { get; set; }
    public List<Sex> Sexs { get; set; }

    //Fremviser hvilke roller man kan være
    public int fk_role { get; set; }
    public List<Role> Roles { get; set; }

    //Viser hvilke fag man kan få hjælp til.
    public int fk_Professionals { get; set; }
    public List<Professional> Professionals { get; set; }

    public User User { get; set; }

    //hvilke slags pakke brugere skal have, men den bliver sat til 0 hele tiden ved oprettelse.
    public int fk_package { get; set; }

    //Denne her klare sig selv!!
    //den skal selv opret datetime (Altså tilføj sig selv)
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime creatadate
    {
        get { return DateTime.Now; }
    }

    [Display(Name="Age")]
    [DataType(DataType.Date)]
    public DateTime age { get; set; }

    //Den her bliver sat på true eller false alt efter om man har valgt mentor eller elev/forældre
    public bool Approved { get; set; }

    //Angiver et billede til databasen. (Det kan ikke blive slette).. bare rolig..
    public string img { get; set; }

    [DataType(DataType.PhoneNumber)]
    [Required(ErrorMessage="Der skal være et telefon nr.")]
    [MinLength(8, ErrorMessage="Vi skal bruge 8 tegn som min.")]
    [MaxLength(8, ErrorMessage="Alle har et telefon nr på 8 tegn.")]
    public int PhoneNumber { get; set; }

}

我错了,因为我无法将其插入用户tablen?

1 个答案:

答案 0 :(得分:0)

错误是不言自明的。这是因为您将MentorOrdblind_MVC.Models.Konto.UsersAccount的实例传递给db.Users.InsertOnSubmit方法,该方法需要MentorOrdblind_MVC.Models.Linq.User的实例。您必须创建User的实例,从UsersAccount变量中分配其属性,并将其传递给db.Users.InsertOnSubmit方法。

您还需要将if语句更改为if (CreateAnAccount == null),否则只有在输入的电子邮件已存在于数据库中时才会插入记录。

将您的代码更改为

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateUsers(UsersAccount UsersAccount)
{
    if (ModelState.IsValid)
    {
        var email = UsersAccount.Email;
        // Checking up whether there is a user with the email.
        var CreateAnAccount = db.Users.FirstOrDefault(b => b.Email == email);
        if (CreateAnAccount == null)
        {
            var user = new User();
            user.Email = email;//email
            user.PassWordHash = UsersAccount.PassWordHash;//password
            user.Firstname = UsersAccount.Firstname;//firstname
            user.Lastname = UsersAccount.Lastname;//lastname
            user.PhoneNumber = UsersAccount.PhoneNumber;//phonenumber

            //true - False
            user.Newsletter = Convert.ToBoolean(UsersAccount.Newsletter);//newsletter

            //which some Fk users have chosen.
            user.fk_role = Convert.ToInt32(UsersAccount.Roles);// what's roles
            user.fk_package = 0;//package
            user.fk_sex = Convert.ToInt32(UsersAccount.Sexs);//sex
            user.fk_area = Convert.ToInt32(UsersAccount.Areas);//area
            user.fk_Professionals = Convert.ToInt32(UsersAccount.Professionals);//professional

            //age
            user.age = Convert.ToDateTime(UsersAccount.age);

            //img users
            user.img = "userimg.png";

            // Need to find out what role you have chosen,
            if (user.fk_role == 6)
            {
                user.Approved = false;
            }
            else
            {
                user.Approved = true;
            }

            // should just content into the database.
            db.Users.InsertOnSubmit(user);

            // must save the contents.
            db.SubmitChanges(); // save

            // send the person to the log in page.

        }
        else
        {
            //Fremviser en fejl besked hvis der findes en email.
            ViewBag.MessageError = "Denne brugere findes i vores system.";
        }
    }
    //return indhold til siden.
    return View();
}
相关问题