我要定義「說明」屬性上我的模型,用於提示,網格,報告等,以及確認其他&屬性一般用途:MVC Passing models vs viewmodels - 如何保留模型元信息?
public class MyModel
{
...
[DisplayName("Yo thang")]
[Description("This field determines the XYZ blah-de-blah")] // Tooltips
[StringLength(100)] // Validation
public string CoolThing { get; set; }
...
}
在詳細內容/編輯觀點對於爲MyModel,我想「這個字段決定...」自動作爲工具提示,並驗證踢入。
我有這個目前正在運行時,視圖直接給MyModel(幫助函數讀取屬性&連線jQuery的小部件)。
但是,我考慮搬到的ViewModels + AutoMapper,並明確作爲屬性是不是在視圖模型我會失去這個功能:
public class MyViewModel
{
...
public string CoolThing { get; set; }
...
}
我不想把屬性上MyViewModel,因爲許多ViewModel將擁有這個屬性,這將複製信息(非DRY)。
什麼是我的最佳選擇,以保留元信息在一個位置,但保留ViewModels的好處?
感謝穆罕默德,這當然是一種選擇,但爲了便於開發和簡化對其他開發人員的顯然是很清潔劑可以將元信息直接保存在模型本身上。來想一想...可以MyViewModel有[MetadataType(typeof(MyModel))]? –
@BrendanHill是將元信息放在模型類上會更乾淨,但在你的情況下,我更喜歡這種方法(因爲我不知道另一種方法:)'[MetadataType(typeof(ModelMetaDate))]'''''''' MyViewModel'? – MRB
如果可以使用模型本身的MetadataType,那麼我可以a)將我的屬性保留在我的模型(首選位置)上;和b)只寫模型+視圖模型而不是模型+視圖模型+元模型 - 保持簡單。 –