我想保持模型綁定時,從我的看法做ajax調用。我使用jquery ajax打的電話,而只是作爲一個示例 - 這是我的控制器方法我想從AJAX調用:當涉及複雜類型時,如何處理ajax和模型綁定?
public ActionResult Create(Person personToCreate) {
//Create person here
}
正如你所看到的,這種方法依賴於Model Binding。這使得該方法更加清潔......但是,這意味着,當ajax發起調用時,它必須提供DB中不可空的所有變量。
所以,如果我有一個表稱爲Person
有變量:
firstName varchar(25) not-null
lastName varchar(25) not-null
myPet int not-null <-- This is a foreign key
然後實體框架類,Person
,創建將類似於:
public class Person {
public string firstName { get; set; }
public string lastName { get; set; }
public Pet myPet { get; set; }
}
由於沒有一個變量可以爲空(如在DB中指定的),這意味着ajax調用必須提供string firstName
,string lastName
,Pet myPet
。但JavaScript不能提供寵物...
所以我只有兩個選擇(據我所知):
允許myPet爲空在DB
創建一個「扁平化「類,表示不需要的寵物對象的人......
即:
public class SimplePerson {
public string firstName { get; set; }
public string lastName { get; set; }
public string myPetName { get; set; }
}
與第一選項的問題是,它似乎很奇怪有,因爲它使事情不應該是修改DB ...肯定有毛病吧......
與第二的問題選項是我有很多類,而且爲了避免這種情況,爲每個類編寫重複類似乎非常廣泛......如果我有30個類,那將是30個重複的類,我必須創建它們才能允許用於模型綁定。
任何人都可以想到更好的選擇,或給出推理爲什麼一個選項會比另一個更好?
「將視圖模型類與實際模型類分開」,所以你說我應該簡化每個類的重複項? – Matt 2009-07-16 18:04:20
是的,爲了映射進出窗體等而虛弱了下來。 – 2009-07-17 12:42:12