我有一個單獨的.dll與我們的數據庫模型和部分類等使用FluentValidation工作正常(這是由桌面條碼終端和我們的網站都使用它)。MVC FluentValidation與實體框架在單獨的.dll
對於桌面應用程序,我可以讀取並顯示所有的錯誤,如下面
public override int SaveChanges()
{
var errors = this.GetValidationErrors();
if (errors.Any())
{
//handle validation errors
return 0;
}
else
{
return base.SaveChanges();
}
}
對於MVC網站,我可以設置在單獨的模型驗證或創建數據的註釋,並得到這些工作的好(這是不是有什麼我想要)。我無法理解的事情是如何強制我的模型映射到實體,以便能夠在視圖中顯示流暢的驗證消息。我不希望維護兩套獨立的邏輯,並且條形碼應用程序和網站必須使用相同的邏輯。
我是否必須將我的實體直接映射到視圖?我一直認爲這是一件壞事,不夠靈活。或者有什麼方法可以說明模型中的字段映射回我的某個實體的屬性?也許是一些描述的註釋。
編輯:
只是一些澄清的,我需要的類型的驗證。
大多數前端輸入類型驗證仍然保留在viewModels(必需/長度/密碼匹配等 - 基本上我可以用於客戶端驗證的所有東西)。但是,我不想在那裏進行所有業務邏輯驗證。像電子郵件地址之類的東西必須在設置其他選項之前進行驗證,帳戶號碼必須是基於名稱的特定格式(我不能用正則表達式做的事情)。這個特定的日期不是有效的交貨日期等。
我想我可以做的一件事就是將這些添加到ValidationSummary中,並將它們與各個字段分開顯示。
嗨克里斯和謝謝,我更新了我的問題,以解釋我需要更好的類型。不幸的是,即使最簡單的更新可以發生,我們也確實需要滿足一大堆標準,並且由於兩個單獨的程序必須使用它,所以我真的需要它。 – 2013-04-04 19:58:09
您的視圖模型也可以共享。只需將它們添加到您的類庫中即可。我唯一的觀點是,你應該從驗證的角度來看待你的視圖模型。從實體的角度來看,您唯一需要擔心的是完美的數據庫完整性問題。 – 2013-04-04 20:58:07