非常に明白な何かが欠けているか、これまで読んだ内容を理解していないと確信しています。データのテーブルを含む from があり、そのうちの 2 つのフィールドを編集可能にする必要があります。フォームが受け取るデータはIEnumerable
. ただし、コントローラ関数が を受信する代わりにポスト データを受信するIEnumerable
と、何も取得しません。生のデータ型だけを受け取ると、正しい id フィールドを持つオブジェクトの単一のインスタンスが取得され、他のすべてのフィールドは空になります。誰かが私を正しい方向に向けてもらえますか?
MODEL: (最初に EF モデルによって生成されます)
Partial Public Class QuoteBundlePackage_Result
Public Property id As Integer
Public Property employeeId As Nullable(Of Integer)
Public Property employeeName As String
Property bundleId As Nullable(Of Integer)
Public Property bundleDescription As String
Public Property packageId As Nullable(Of Integer)
Public Property packageContents As String
End Class
意見:
@ModelType IEnumerable(Of gbip_new.QuoteBundlePackage_Result)
@Using Html.BeginForm()
@Html.ValidationSummary(True)
<fieldset>
<legend>Quote</legend>
<table>
<tr>
<th>
@Html.DisplayNameFor(Function(model) model.employeeId)
</th>
<th>
@Html.DisplayNameFor(Function(model) model.employeeName)
</th>
<th>
@Html.DisplayNameFor(Function(model) model.bundleId)
</th>
<th>
@Html.DisplayNameFor(Function(model) model.bundleDescription)
</th>
<th>
@Html.DisplayNameFor(Function(model) model.packageId)
</th>
<th>
@Html.DisplayNameFor(Function(model) model.packageContents)
</th>
<th></th>
</tr>
@For Each item In Model
Dim currentItem = item
Html.HiddenFor(Function(modelItem) currentItem.id)
@<tr>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.employeeId)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.employeeName)
</td>
<td>
@Html.EditorFor(Function(modelItem) currentItem.bundleId)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.bundleDescription)
</td>
<td>
@Html.EditorFor(Function(modelItem) currentItem.packageId)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.packageContents)
</td>
</tr>
Next
</table>
<p>
<input id="Submit1" type="submit" value="submit" />
</p>
</fieldset>
End Using
コントローラ
<HttpPost()> _
Function QuoteBundlePackage(ByVal eqDetails As IEnumerable(Of Global.gbip_new.QuoteBundlePackage_Result)) As ActionResult
If ModelState.IsValid Then
'Do stuff
Return RedirectToAction("Index")
End If
Return View(eqDetails)
End Function