我已經選擇LINQ to SQL作爲ASP .NET MVC3項目的ORM框架。在我面臨需要在註冊表單中添加額外字段「確認密碼」之前,一切都很好。正如在一個關於SO的問題中提到的(不幸的是我現在找不到它),最好使用接口將生成的LINQ擴展爲帶有驗證屬性的SQL類,而不是讓另一個類來存儲驗證屬性。所以在這裏,我們去:將LINQ擴展到SQL生成的類
public interface IRegTry
{
[Required]
[Email]
string EMail { get; set; }
[Required]
[StringLength(100, ErrorMessage = "Should not exceed 100 symbols")]
string FirstName { get; set; }
[Required]
string Password { get; set; }
}
[MetadataType(typeof(IRegTry))]
public partial class RegTry : IRegTry { }
RegTry
類由LINQ生成的類基於數據庫實體SQL。
在視圖上我們確認了密碼字段,它應該確保兩個輸入的密碼相互等同。
所以在這裏我們將其添加:
public class RegTryViewModel : RegTry
{
[Required]
[EqualTo("Password", ErrorMessage = "You should type two identical passwords to continue")]
public string ConfirmPassword { get; set; }
}
的看法是強類型的視圖,RegTryViewModel
模型。
我只是問在這裏,以確保我做的一切正確。讓我感到不舒服的是我在IRegTry
接口和RegTryViewModel
類之間傳播了驗證邏輯。但是我不能將ConfirmPassword
屬性添加到IRegTry
接口,因爲基於SQL的LINQ類根本沒有它。 在此先感謝你們!
PluralSight鏈接已損壞,如果有效的鏈接可用,請更新 –