我的問題與this stack overflow question中的情況基本相同,我發現自己希望加載現有的有效版本的模型從數據庫中,並更新其中的一部分,因爲某些子字段的字段暴露在我的Web表單上。對ASP.NET MVC模型進行部分更新的最佳方式(用模型將用戶提交的表單'合併')
是否有無論如何我可以使模型綁定過程保證我的ID屬性將被首先綁定?
如果我可以保證這一件事,那麼,在ViewModel的ID屬性的setter中,我可以觸發一個'load',以便該對象最初從數據庫(或WCF服務..或Xml文件..或其他選擇存儲庫),然後從FORM表單提交的其餘屬性整齊地合併到對象中,因爲MVC完成了它的模型綁定過程。
然後,我IValidatableObject.Validate方法邏輯將很好地告訴我,如果得到的對象仍然是有效的..等等等等..
它只是在我看來,有寫管道在那裏我有模型的兩個實例(knownValidDomainModelInstanceFromStorage,postingPartialViewModelInstanceFromForm),然後手動映射到期望的屬性上是重複真正已經由MVC處理的東西...如果我只能控制身份的綁定順序。
編輯 - 我發現屬性綁定順序可以用自定義綁定器操縱。非常簡單地。閱讀下面發佈的答案。仍然歡迎您的反饋或意見。
我已經開始使用這個概念,至今它似乎工作得很好。必須在我的ViewModel的ID設置工具上做一些工程,使其按照我想要的方式進行加載,而無需對其自身進行遞歸。但是,在此之後,這一切似乎都很簡單。沒有更多的部分模型或部分映射惡夢。希望其他人認爲它和我一樣有用。 – bkwdesign