使用MVC3,c#使用部分類擴展類
我在想模型,類,數據庫表和部分類的「層次結構」。
在DB我有一個UserAccount表結構爲:
USERACCOUNT:用戶ID,名字,姓氏,登錄名,密碼,電子郵件
在項目中,我有一個名爲的usermodel模型。我正在使用它,所以我可以用dataannotations裝飾屬性。它被設置爲元數據類型爲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; }
}
注意有一個「密碼」一欄,但沒有「confirmPassword」然而,在的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沒有'confirmPassword'的定義
所以我有點卡住了。我知道我可以切換回使用UserModel作爲模型,然後在控制器中,我可以構建一個新的useraccount實例,並使用模型中的數據填充它,然後將實例保存到數據庫。
所以我想我的問題是,爲什麼useraccount不包含confirmPassword的定義?