我得到以下Razor視圖,顯示硬盤列表,以便用戶添加到購物車中。當用戶按下每一行HDD旁邊的按鈕時,它會將數量和HDD的身份傳遞給控制器。但是,當我檢查控制器的參數時,雖然每個硬盤ID都正確顯示,但「hddId」始終爲1,「數量」正確5。ASP MVC將模型數據作爲表單數據傳回
@model IEnumerable<TestStore.Models.Hdd>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using(Html.BeginForm("AddToCart","Cart")){
<table>
<tr>
<th>
Ident
</th>
<th>
Brand
</th>
<th>
Name
</th>
<th>
Model
</th>
<th>
Speed
</th>
<th>
Capacity
</th>
<th>
Cache
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.hddId)
</td>
<td>
@Html.Hidden("hddId", item.hddId)
@Html.Hidden("quantity", 5)
@Html.DisplayFor(modelItem => item.brand)
</td>
<td>
@Html.DisplayFor(modelItem => item.name)
</td>
<td>
@Html.DisplayFor(modelItem => item.model)
</td>
<td>
@Html.DisplayFor(modelItem => item.speed)
</td>
<td>
@Html.DisplayFor(modelItem => item.capacity)
</td>
<td>
@Html.DisplayFor(modelItem => item.cache)
</td>
<td>
<input type="submit" value="Add to Cart" />
</td>
</tr>
}
</table>
}
但你硬編碼5 ?? – codingbiz
是的,我對「數量」硬編碼5,而控制器對該參數確實看到5。 – MooCow
您的提交按鈕沒有引用特定的行,我認爲將提交整個表單而不是單擊它的行。我認爲應該有一種方法來指定每行的ID和數量,以便提交知道要提交什麼值 – codingbiz