0

我有以下看法:

<h2>
Contract</h2>
@Using Html.BeginForm()
@Html.ValidationSummary(False)
@<fieldset>
<legend>Hire Contract</legend>
<div class="editor-label">
@Html.LabelFor(Function(model) model.ContractNo)
</div>
<div class="editor-field">
@Html.DisplayTextFor(Function(model) model.ContractNo)
</div>

<div class="editor-label">
@Html.LabelFor(Function(model) model.HireId)
</div>
<div class="editor-field">
@Html.DisplayTextFor(Function(model) model.HireId)
</div>

-- More fields here --- 

<div>
<table>
<tr>
<th>
Line Id
</th>
<th>
Description
</th>
<th>
Return Quantity
</th>
<th>
</th>
</tr>

<p/>
@Html.ActionLink("Add Line", "AddContractLine")
<p/>

@For Each item In Model.HireContractLines
Dim currentItem = item
@<tr>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.LineId)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Description)
</td>

-- Many other fields here ...

<td>
@Html.ActionLink("Edit", "EditContractLine", New With {.id = currentItem.LineId})
|
@Html.ActionLink("Delete", "DeleteContractLine", New With {.id = currentItem.LineId})
|
@Html.ActionLink("Return Line", "ReturnContractLine", New With {.id = currentItem.LineId})
</td>
</tr>
Next
</table>
</div>
<p>
<input type="submit" value="Full Return" />
</p>
</fieldset>

控制器看起来像:

Function EditContractLine(hireLineId? As Integer) As ActionResult
Dim contractLine = GetContractLine(CInt(hireLineId))
Return View(ContractLine)
End Function

但是,当我单击 Edit Line 或 Delete Line 时,值不会传递给控制器​​操作。它始终为 Null。

谁能指出我的问题?任何意见将不胜感激。

4

1 回答 1

0

我发现问题出在哪里:

Action Link 和 Controller Parameter 中的参数名称应相同。

例如 .id 应该是 .hireLineId 以匹配控制器参数名称!!

@Html.ActionLink("Return Line", "ReturnContractLine", New With {.id = currentItem.LineId})

于 2012-08-04T00:50:53.440 回答