假設我有一個強類型爲「MyData」的表的編輯視圖。該視圖具有多個選項卡,每個選項卡都具有表格中的幾個不同字段。爲了提高性能,僅在查看標籤頁時才加載數據,因此如果僅編輯標籤頁1上的字段並提交表單,標籤頁2的數據將不會被加載。當並非所有字段都加載時,在強類型視圖上保存數據的最佳方式
我遇到的問題是提交。我做的查找數據庫中的現有記錄和更新傳遞的值的典型程序:
<AcceptVerbs(HttpVerbs.Post)> _
Function Edit(ByVal data As MyData) As ActionResult
Using dc = New MyDataContext
Dim orig = dc.MyDatas.Single(Function(x) x.id = data.id)
orig.name = data.name
orig.desc = data.desc
...
SubmitChanges()
End Using
Return View(orig)
End Function
然而,這種方法不知道加載哪些選項卡,所以如果對「遞減」的標籤它沒有加載,這個方法認爲用戶清除了「desc」字段,並向數據庫發送NULL。
我怎樣才能構造這個,只有加載的字段被髮送到數據庫,並且卸載的字段被忽略?
我假設你不是指「UpdateModel(orig)」,因爲它沒有引用任何表單數據,但是我將如何從我的原始示例中設置它?它會是「UpdateModel(數據)」嗎?當我嘗試時,我得到一個無益的「MyProject.MyData類型的模型沒有成功更新。」 – gfrizzle 2009-12-09 21:52:20