2009-12-29 35 views
1

我有一個供應商表(供應商對象),其中一列是對我的帳戶表(帳戶對象)的NULLABLE外鍵引用。在我的編輯表單中,我將帳戶列表顯示爲下拉列表。我沒有問題設置價值,也沒有更新到另一個帳戶的價值。爲MVC應用程序清除外鍵值

但是,我一直無法清除它的價值。每次我這樣做時,UpdateModel()調用或者Save()調用似乎都會自動失敗(無模型錯誤)。我已經試過了代碼,但我一直無法得到一致的結果,所以我不能確定確切的問題,但它似乎都指向FK參考。我已經明確地嘗試將值設置爲Nothing,但這不起作用。

這是我的原始代碼。

<AcceptVerbs(HttpVerbs.Post)> _ 
Public Function Edit(ByVal id As String, ByVal formValues As FormCollection) As ActionResult 
    Dim vendor = _repo.GetVendor(id) 

    Try 
     UpdateModel(vendor) 

     _repo.Save() 

     Return RedirectToAction("Index") 
    Catch 
     ModelState.AddRuleViolations(vendor.GetRuleViolations()) 

     ViewData.Item("Accounts") = Models.DropDownPopulators.PopulateAccounts(_accounts.FindAllAccounts(), vendor.DefaultAccount) 

     Return View(vendor) 
    End Try 
End Function 

我甚至嘗試在更新後添加以下內容。我也嘗試在更新之前對錶單值執行相同操作。

If (vendor.DefaultAccount.Equals("")) Then vendor.DefaultAccount = Nothing 
+0

我們可以看到存儲庫的'Save'方法嗎?另外,你是否100%確定'vendor'是否在當前版本庫集合中? – 2009-12-29 18:54:52

+0

由於所有格式(包括換行符)都被刪除,所以我不得不作爲回答發佈回覆。不知道這是否是正確的做法... – Jason 2009-12-30 00:22:17

回答

0

我100%肯定,我與我的VendorRepository

Private _repo As New Models.VendorRepository() 

Namespace Models 

    Public Class VendorRepository 

    Private _db As New InvoicingDataContext() 

    Public Function FindAllVendors() As List(Of Vendor) 
    Return _db.Vendors.ToList() 
    End Function 

    Public Function GetVendor(ByVal id As String) As Vendor 
    Return _db.Vendors.SingleOrDefault(Function(v) v.Id = id) 
    End Function 

    Public Sub Save() 
    _db.SubmitChanges() 
    End Sub 

End Class 

End Namespace 
0

使用一個單獨的類處理到比較器的值和控制器,查看頁面傳遞值使用該「視圖類」。

相關問題