在 MVC3 中工作,c#
我想知道模型、类、数据库表和部分类的“层次结构”。
在数据库中,我有一个 UserAccount 表,其结构如下:
USERACCOUNT:用户 ID、名字、姓氏、登录名、密码、电子邮件
在我的项目中,我有一个名为 UserModel 的模型。我正在使用它,所以我可以用数据注释来装饰属性。它被设置为 useraccount 类的元数据类型,如下所示:
[MetadataType(typeof(UserModel))]
public partial class useraccount
{
}
public class UserModel
{
public int UserId { get; set; }
[Display(Name="First Name")]
[StringLength(20)]
[Required]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[StringLength(30)]
[Required]
public string LastName { get; set; }
[Display(Name = "Email Address")]
[StringLength(20)]
[Required]
public string email { get; set; }
[Remote("IsUserNameAvailable", "Validation")]
[Display(Name = "Choose a Login Name")]
[StringLength(40)]
[Required]
public string login { get; set; }
[Display(Name = "Choose a Password")]
[StringLength(64)]
[Required]
public string password { get; set; }
[Display(Name = "Enter Password Again")]
[StringLength(64)]
[Required]
public string confirmPassword { get; set; }
}
请注意,在数据库表中有一个“密码”列,但在 UserModel 中没有“确认密码”。
我的想法是 UserAccount 类,使用 UserModel 类作为元数据,现在应该包含“confirmPassword”的定义。
这是我遇到的问题。在注册视图中,我使用 UserModel 作为模型,所以在页面顶部我有:
@model OurAgreements.Models.UserModel
当我尝试保存时,问题出现在控制器中。这段代码:
public ActionResult Register(UserModel model)
{
var repo = new Repository();
if (ModelState.IsValid)
{
using (var db = new ouragreementEntities())
{
db.useraccount.Add(model);
db.SaveChanges();
}
return View();
}
给出错误,无法将 UserModel 转换为 useraccount。我可以理解这一点,我正在尝试将数据放入与所有列都不匹配的表中。
因此,我想我会将视图上的模型更改为:
@model OurAgreements.Models.useraccount
因为根据我的想法,useraccount 类应该使用 UserModel,但这样做会产生错误,'useraccount has no definition for 'confirmPassword'
所以我有点卡住了。我知道我可以切换回使用 UserModel 作为模型,然后在控制器中我可以构建一个新的用户帐户实例,并用模型中的数据填充它,然后将实例保存到数据库中。
所以我想我的问题是,为什么 useraccount 不包含confirmPassword 的定义?