2010-08-27 59 views
0
  1. 考慮經典的例子:在下拉產品 和類別
  2. 編輯產品
  3. 類別的標識是 選擇 - 類別映射 爲對象,具有空 除ID的所有領域
  4. 提交產品編輯表單時 - 驗證提供了一個錯誤:「類別 名稱是必需的」(我需要 屬性的類別名稱屬性)

如何與這樣的錯誤處理,如果我想使用內置的驗證(if (!ModelState.IsValid))? 編寫自定義數據綁定程序,可以使用數據庫中的值填充所有這些只有id的對象。asp.net的MVC:結合複合物

你有這個問題的任何其他解決辦法?

+0

你不應該發表任何類別背部採用了產品編輯表單,僅在產品類別ID。我們可以看到一些代碼嗎? – madcapnmckay 2010-08-27 10:14:18

+0

我同意你的意見。但是,在驗證綁定的Product對象時,asp.net mvc綁定機制會將Product.Category的所有必需字段映射爲存在。我相信我需要填寫的地方綁定和驗證 – kilonet 2010-08-27 10:20:18

回答

1

您需要將您的回修改後的產品和類別ID。然後在你的控制器/倉庫中從傳入的類別id中獲取類別,並將該類別設置爲產品類別。

正如所以你不應該得到「分類名稱是必需的」類別從數據庫(或地方)返回的所有屬性應該是propulates

的我是什麼意思一個簡單的例子:

[HTTPost] 
public ActionResult Save(Product product, int? categoryId) 
{ 
    Category category = GetCategory(categoryID); 

    product.Category = category; 

    if (ModelState.IsValid) 
    { 
    // Save etc. 
    } 
} 
+0

沒有真正我想要的東西之間的類別屬性:我仍然手動每個控制器動作綁定的對象。我想過可用於所有對象的通用綁定器。但它畢竟是一個可接受的解決方案 – kilonet 2010-08-27 10:50:51

+0

只是檢查你的代碼:遺憾的是它不工作:ModelState中仍然是IsValid的您是否正在使用實體框架,NHibernate的或別的東西裝類別 – kilonet 2010-08-27 11:01:05

+0

後!如果你想要通用的模型綁定你應該看看http://automapper.codeplex.com/ - 這將您的用戶界面映射到對象。當您在檢查模型狀態之前嘗試調試您的應用程序時,會發生什麼情況?是否填充了類別? – lancscoder 2010-08-27 12:10:13