0
美好的一天傢伙!2個相同屬性的型號,MVC3
我剛開始使用MVC3,我的應用程序中有2個模型,即「Page」和「PageHistory」都具有相同的屬性。除了「PageHistory」有一個名爲「PageId」的額外屬性,它引用了「Page」模型。
我的問題是我正確的做法嗎?或者我應該爲此使用繼承。 如果繼承是一個選項,我該如何處理這個問題,任何例子都會幫助我很多。
我的模型看起來像如下:
public class Page
{
private readonly IndianTime _g = new IndianTime();
public Page()
{
CreatedOn = _g.DateTime;
Properties = "Published";
Tags = "Page";
RelativeUrl = string.Empty;
}
public string Path
{
get { return (ParentPage != null) ? ParentPage.Heading + " >> " + Heading : Heading; }
}
[Key]
public int Id { get; set; }
[StringLength(200), Required, DataType(DataType.Text)]
public string Title { get; set; }
[StringLength(200), Required, DataType(DataType.Text)]
public string Heading { get; set; }
[MaxLength, Required, DataType(DataType.Html)]
public string Content { get; set; }
[Display(Name = "Reference Code"), ScaffoldColumn(false)]
public string ReferenceCode { get; set; }
[Required]
[Remote("CheckDuplicate", "Page", ErrorMessage = "Url has already taken", AdditionalFields = "initialUrl")]
public string Url { get; set; }
[Display(Name = "Created On"), ScaffoldColumn(false)]
public DateTime CreatedOn { get; set; }
//Parent Page Object (Self Reference: ParentId = > Id)
[Display(Name = "Parent Page")]
public int? ParentId { get; set; }
[DisplayFormat(NullDisplayText = "Root")]
public virtual Page ParentPage { get; set; }
public virtual ICollection<Page> ChildPages { get; set; }
}
是的,我同意。我在想什麼,我應該寫一組相同的模型代碼嗎?因爲兩種模型都是一樣的;唯一的事情是「PageHistory」表格只有當我改變「Page」表格中的任何記錄的值時纔會被填充。 –
你的思維過程是恰當的,以減少代碼,但有時多一點它不會受到傷害,但我仍然會看到是否有機會使PageHistory成爲Page屬性,但如果你擁有它這是由於一些商業規則讓它成爲現實。我明白,頁面歷史記錄在您的系統中是相當不同的類型,因爲您可能只想獲取頁面歷史記錄 –