我有一個Person型號:編輯模型,包括導航性能MVC4
Partial Public Class Person
Public Property Id As Long
<DisplayName("Fornavn")>
Public Property Firstname As String
<DisplayName("Efternavn")>
Public Property Lastname As String
Public Property chr_cpr As String
<DisplayName("Medarbejdernummer")>
Public Property EmployeeNumber As String
Public Overridable Property Accounts As ICollection(Of Account) = New HashSet(Of Account)
Public Overridable Property PaymentCards As ICollection(Of PaymentCard) = New HashSet(Of PaymentCard)
Public Overridable Property PaymentRoles As ICollection(Of PaymentRole) = New HashSet(Of PaymentRole)
Public Overridable Property AllPaymentRoles As ICollection(Of PaymentRole) = New HashSet(Of PaymentRole)
Public Overridable Property BillableDepartments As ICollection(Of Department) = New HashSet(Of Department)
Public Overridable Property AllDepartments As ICollection(Of Department) = New HashSet(Of Department)
Public Overridable Property AccessablePosDevices As ICollection(Of PosDevice) = New HashSet(Of PosDevice)
Public Overridable Property AllPosDevices As ICollection(Of PosDevice) = New HashSet(Of PosDevice)
End Class
和帳戶模式:
Partial Public Class Account
Public Property Id As Long
Public Property PersonId As Long
Public Property Balance As Decimal
Public Property SchemaId As Long
Public Property HasAutoRefill As Boolean
Public Overridable Property Schema As AccountSchema
Public Overridable Property Person As Person
End Class
並有paymentCard模型:
Partial Public Class PaymentCard
Public Property Id As Long
Public Property Serial As String
Public Property TypeId As Nullable(Of Long)
Public Property IsActive As Boolean
Public Property PersonId As Long
Public Overridable Property Type As CardType
Public Overridable Property Person As Person
End Class
我想成爲可以從人員/編輯視圖編輯人員,支付卡和帳戶屬性。我正在使用EditorTemplates。這是我的看法:
@ModelType IDCompany.WEB.Person
@Using Html.BeginForm()
@Html.ValidationSummary(True)
@<fieldset>
<legend>Person</legend>
@Html.HiddenFor(Function(model) model.Id)
<div class="editor-label">
@Html.LabelFor(Function(model) model.Firstname)
</div>
<div class="editor-field">
@Html.EditorFor(Function(model) model.Firstname)
@Html.ValidationMessageFor(Function(model) model.Firstname)
</div>
<div class="editor-label">
@Html.LabelFor(Function(model) model.Lastname)
</div>
<div class="editor-field">
@Html.EditorFor(Function(model) model.Lastname)
@Html.ValidationMessageFor(Function(model) model.Lastname)
</div>
<div class="editor-label">
@Html.LabelFor(Function(model) model.chr_cpr)
</div>
<div class="editor-field">
@Html.EditorFor(Function(model) model.chr_cpr)
@Html.ValidationMessageFor(Function(model) model.chr_cpr)
</div>
<div class="editor-label">
@Html.LabelFor(Function(model) model.EmployeeNumber)
</div>
<div class="editor-field">
@Html.EditorFor(Function(model) model.EmployeeNumber)
@Html.ValidationMessageFor(Function(model) model.EmployeeNumber)
</div>
</fieldset>
@<table class="cardTable">
<tr>
<th>Id</th>
<th>Serienummer</th>
<th>Type</th>
<th>Aktiv</th>
</tr>
@Html.EditorFor(Function(x) x.PaymentCards)
</table>
@Html.EditorFor(Function(x) x.Accounts)
@<p><input type="submit" value="Save" /></p>
End Using
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@Section Scripts
@Scripts.Render("~/bundles/jqueryval")
End Section
這裏是我的人/ EditorTemplates /賬號:
@ModelType IDCompany.WEB.Account
@Html.EditorFor(Function(model) model.PersonId)
@Html.EditorFor(Function(model) model.Id)
@Html.EditorFor(Function(model) model.HasAutoRefill)
@Html.EditorFor(Function(model) model.SchemaId)
我的人/ EditorTemplates/PaymentCard:
@ModelType IDCompany.WEB.PaymentCard
@Html.HiddenFor(Function(model) model.TypeId)
@Html.HiddenFor(Function(model) model.PersonId)
@Html.HiddenFor(Function(model) model.Id)
@Html.HiddenFor(Function(model) Model.Serial)
@Html.HiddenFor(Function(model) Model.Type.Name)
<tr class="cardRow">
<td>@Model.Id</td>
<td>@Model.Serial</td>
<td>@Model.Type.Name</td>
<td>@Html.EditorFor(Function(model) model.IsActive)</td>
</tr>
而且這是在編輯功能我的PersonController:
<HttpPost()> _
Function Edit(ByVal person As Person) As ActionResult
Dim kontoSubMenu As New List(Of MenuPoint)
Dim emptyList As New List(Of String)
kontoSubMenu.Add(New MenuPoint("Kantine", emptyList, "Kontooplysninger", "Home", "All"))
kontoSubMenu.Add(New MenuPoint("Personer", emptyList, "Personer", "Person", "All"))
kontoSubMenu.Add(New MenuPoint("Test", emptyList, "LogUd", "Home", "All"))
ViewBag.kontoSubMenu = kontoSubMenu
If ModelState.IsValid Then
Dim paymentcardList
paymentcardList = person.PaymentCards.ToList()
For Each pc In paymentcardList
db.Entry(pc).State = EntityState.Modified
db.SaveChanges()
Next
Dim accountList
accountList = person.Accounts.ToList()
For Each ac As Account In accountList
db.Entry(ac).State = EntityState.Modified
'Dim accountValue As Account = db.Accounts.Find(accountt.Id)
db.SaveChanges()
Next
db.Entry(person).State = EntityState.Modified
db.SaveChanges()
Return RedirectToAction("Index")
End If
Return View(person)
End Function
我是MVC的新手。 當我試圖編輯視圖中的Som數據時,出現錯誤: 「發生了參照完整性約束衝突:定義參照約束的屬性值在關係中的主體和從屬對象之間不一致。 「db.Entry(pc).State = EntityState.Modified」
我在做什麼錯?