- 考慮經典的例子:在下拉產品 和類別
- 編輯產品
- 類別的標識是 選擇 - 類別映射 爲對象,具有空 除ID的所有領域
- 提交產品編輯表單時 - 驗證提供了一個錯誤:「類別 名稱是必需的」(我需要 屬性的類別名稱屬性)
如何與這樣的錯誤處理,如果我想使用內置的驗證(if (!ModelState.IsValid)
)? 編寫自定義數據綁定程序,可以使用數據庫中的值填充所有這些只有id的對象。asp.net的MVC:結合複合物
你有這個問題的任何其他解決辦法?
如何與這樣的錯誤處理,如果我想使用內置的驗證(if (!ModelState.IsValid)
)? 編寫自定義數據綁定程序,可以使用數據庫中的值填充所有這些只有id的對象。asp.net的MVC:結合複合物
你有這個問題的任何其他解決辦法?
您需要將您的回修改後的產品和類別ID。然後在你的控制器/倉庫中從傳入的類別id中獲取類別,並將該類別設置爲產品類別。
正如所以你不應該得到「分類名稱是必需的」類別從數據庫(或地方)返回的所有屬性應該是propulates
的我是什麼意思一個簡單的例子:
[HTTPost]
public ActionResult Save(Product product, int? categoryId)
{
Category category = GetCategory(categoryID);
product.Category = category;
if (ModelState.IsValid)
{
// Save etc.
}
}
沒有真正我想要的東西之間的類別屬性:我仍然手動每個控制器動作綁定的對象。我想過可用於所有對象的通用綁定器。但它畢竟是一個可接受的解決方案 – kilonet 2010-08-27 10:50:51
只是檢查你的代碼:遺憾的是它不工作:ModelState中仍然是IsValid的您是否正在使用實體框架,NHibernate的或別的東西裝類別 – kilonet 2010-08-27 11:01:05
後!如果你想要通用的模型綁定你應該看看http://automapper.codeplex.com/ - 這將您的用戶界面映射到對象。當您在檢查模型狀態之前嘗試調試您的應用程序時,會發生什麼情況?是否填充了類別? – lancscoder 2010-08-27 12:10:13
你不應該發表任何類別背部採用了產品編輯表單,僅在產品類別ID。我們可以看到一些代碼嗎? – madcapnmckay 2010-08-27 10:14:18
我同意你的意見。但是,在驗證綁定的Product對象時,asp.net mvc綁定機制會將Product.Category的所有必需字段映射爲存在。我相信我需要填寫的地方綁定和驗證 – kilonet 2010-08-27 10:20:18