我遇到了一个问题,因为我无法创建/将用户信息投入数据库。它应该尽快插入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?
答案 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();
}