我有一個N層應用程序,其中Data,Domain和前端圖層位於不同的項目中。我正在使用ASP.NET MVC創建網站,我試圖通過使用System.ComponentModel.DataAnnotations來添加驗證規則。目前我已經完成了域類的屬性。 我想知道將驗證規則直接應用於Domain類是否是一種好的做法?或者最好在ASP.NET應用程序中創建ViewModels類並將驗證規則應用於ViewModel類的屬性? 希望這個問題適合在這裏 我感謝任何幫助。正確使用ASP.NET MVC應用程序中的DataAnnotations以及單獨項目中的Domain類?
0
A
回答
1
ViewModel要好得多,因爲ViewModel應該理解它是否能夠從用戶那裏獲得有效的輸入。然後,您可以使用AutoMapper在轉換過程中修復所有其他異常。我還會創建大量自定義,DataAnnotations,DataTypes,編輯器,ModeMetaDataRules和ModelBinder以與應用程序一起使用。
下面是使用自定義模型構建器的ModelFilter的部分代碼,我將發佈其中的一部分,因爲涉及到很多代碼,但它應該讓您處於正確的軌道上。
public interface IModelMetadataFilter
{
void TransformMetadata(ModelMetadata metadata,
IEnumerable<Attribute> attributes);
}
public class MultilineTextByNameConvention : IModelMetadataFilter
{
public void TransformMetadata(ModelMetadata metadata, IEnumerable<Attribute> attributes)
{
if (!string.IsNullOrEmpty(metadata.PropertyName) &&
string.IsNullOrEmpty(metadata.DataTypeName))
{
if (metadata.PropertyName.ToLower().Contains("notes")
|| metadata.PropertyName.ToLower().Contains("description")
|| metadata.PropertyName.ToLower().Contains("comment")
)
{
metadata.DataTypeName = DataType.MultilineText.ToString();
}
}
}
}
此代碼查找具有包含單詞「註釋」,「說明」和「註釋」,自動應用Multitext數據類型屬性爲所有屬性的屬性名稱每個視圖模型。這種類型的代碼可以用於很多其他不同的情況。例如像SSN這樣的字段可以使用RexExpr DataAnnotation的特定格式,依此類推...
1
您可以在實體的部分類上設置屬性,並且自動生成的類不會被覆蓋。
例如,
比方說,你有實體TheEntity
用相同的命名空間的單獨的文件,你可以這樣寫:
namespace SameNamespaceAsEntities
{
internal sealed class TheEntityMetadata
{
//AStringInTheEntity appears twice in your project
//once in the auto gen file, and once here
[Required(ErrorMessage = "Field is required.")]
public string AStringInTheEntity{ get; set; }
}
//http://stackoverflow.com/questions/14059455/adding-validation-attributes-with-an-entity-framework-data-model
[System.ComponentModel.DataAnnotations.MetadataType(typeof(TheEntityMetadata))]
public partial class TheEntity : IEntity //you can set contracts
{
相關問題
- 1. 使用ASP.NET的MVC應用程序中的選項卡
- 2. 構建爲單個ASP.NET MVC應用程序的多個ASP.NET MVC項目
- 3. 保存應用程序狀態ASP.NET MVC中的項目列表?
- 4. 我可以在帶有ASP.NET核心Web應用程序(.NET Framework)的單獨項目中使用EF6遷移嗎?
- 5. 將ASP.NET MVC應用程序放入主MVC應用程序的子目錄中?
- 6. DataAnnotations namespase錯誤時,ASP.NET MVC項目
- 7. ASP.NET MVC - 管理區域或單獨的Web應用程序?
- 8. 如何正確安裝ASP.NET MVC應用程序作爲另一個MVC應用程序的子項?
- 9. Windows應用程序項目中的參考MVC項目
- 10. 是否可以使用MVC項目製作單獨的dll?
- 11. 在ASP.NET MVC Core應用程序(RC2)中顯示項目版本
- 12. Asp.net MVC應用程序內的虛擬目錄應用程序
- 13. Azure中的ASP.NET MVC應用程序與MySQL的應用程序
- 14. 在單獨項目中使用EF5rc模型的MVC?
- 15. asp.net mvc應用程序中的System.FormatException
- 16. Asp.Net MVC應用程序中的子域
- 17. 在asp.net mvc應用程序中的TCPClient
- 18. ASP.NET MVC中的單獨程序集中的視圖
- 19. 沮喪與ASP.NET MVC應用程序的正確體系結構
- 20. 我的ASP.NET MVC應用程序結構是否正確?
- 21. 正在更新應用程序商店中的應用程序以及更多
- 22. 在ASP.NET MVC應用程序中使用AngularJS發佈表單
- 23. 的asp.net MVC應用程序
- 24. 如何在單獨的ASP.NET MVC項目中使用ASP.NET MVC母版頁解決方案
- 25. 如何使用單獨的類在rails應用程序中使用?
- 26. asp.net MVC DataAnnotations
- 27. 在ASP.net MVC項目中使用WSDL
- 28. 如何在asp.net mvc項目中正確引用腳本中的圖像文件?
- 29. 無法在我的ASP.NET MVC應用程序中正確配置路由
- 30. 從不同的現有ASP.NET Web應用程序調用ASP.NET MVC項目URL
最好創建的ViewModels –
@BrianOgden非常感謝你的幫助。然後我將使用automapper來映射Domain類以查看模型類。如果我可以問,有什麼更好的建議? – arvind