我們有一個看起來像這樣的視圖模型:ASP.NET MVC 2模型綁定:如何調試部分失敗的模型綁定回發?
public class myViewModel {
public Contract contract {get;set;}
public Vendor vendor {get;set;}
}
public class Contract {
public int contractID {get;set;}
// ... various string properties
public IList<ContractDetail> contractDetails {get;set;}
pubilc Vendor vendor {get;set;}
}
從形式上說回是完成合同。
[HttpPost]
public ActionResult Edit(Contract contract) { ... }
所有工作都將表單後值綁定回合同參數屬性。
當我們將供應商作爲值對象移動到合同中時,合同的所有第一級「原始」屬性都無法綁定。所有IList <>屬性都很好。
任何想法或什麼更多的信息,我們需要解決這個謎?有沒有什麼方法可以測試MVC如何將值返回給對象參數?解決方案與供應商不是IList,即爲什麼IList屬性工作正常有關?
編輯:
此修復程序是在所有領域,例如絕對指定對象的層次結構名稱,供應商名稱進行綁定,它需要「Contract.vendor.name」的名稱。這個前綴是使用ViewModel爲我們完成的,但是我們並沒有使用Contract模型完成。最後我們這樣做對所有的視圖模板(局部視圖):
EditorFor(m => m.vendor, "Vendor", "Contract.vendor")
其中「供應商」是EditorTemplate「Vendor.ascx」和「Contract.vendor」前綴的所有表單字段名稱的名稱。
我猜是因爲ViewModel嵌套了所有的數據,它導致MVC爲所有屬性正確前綴。這意味着,不會被對象前綴限定的「鬆散」表單字段將不會綁定到指定的參數對象。
當您將供應商作爲價值對象移入合同時,您是什麼意思?你的意思是當你把'公共供應商供應商{得到;設置;}'在你的合同類? – KallDrexx 2010-08-04 15:19:39
當我們將供應商從myViewModel.Vendor移至Contract.Vendor – 2010-08-04 15:45:53