我有这个剃刀观点:
@using System.Globalization
@using Order.Models
@model CartIndexViewModel
@{
ViewBag.Title = "Shopping Cart";
}
@using (Html.BeginForm())
{
<div class="table-responsive">
<table class="table">
<thead>
<th>Qty</th>
<th>Item</th>
<th class="text-right">Price</th>
<th class="text-right">Subtotal</th>
</thead>
<tbody>
@foreach (var m in Model.Cart.Items)
{
<tr>
<td class="text-center">@m.Quantity</td>
<td class="text-left">@m.Item.Name</td>
<td class="text-right">@m.Item.Price.ToString("C", new CultureInfo("en-GB"))</td>
<td class="text-right">@((m.Quantity * m.Item.Price).ToString("C", new CultureInfo("en-GB")))</td>
<td>
@using (Html.BeginForm("RemoveFromCart", "Cart"))
{
@Html.Hidden("ItemId", m.Item.Id)
@Html.HiddenFor(x => x.ReturnUrl)
<input class="btn btn-danger btn-sm" type="submit" value="Remove"/>
}
</td>
</tr>
}
</tbody>
<tfoot>
<tr>
<td colspan="3" class="text-right">Total:</td>
<td class="text-right">
@Model.Cart.ComputeTotalValue().ToString("C", new CultureInfo("en-GB"))
</td>
</tr>
</tfoot>
</table>
<div class="text-center">
<a class="btn btn-primary" href="@Model.ReturnUrl">Back to Menu</a>
</div>
</div>
}
我正在测试&#39;删除项目&#39;
,但我错过了@using(Html.BeginForm(&#34; RemoveFromCart&#34;,&#34; Cart&#34;))
来自购物车中的第一项。我有多个项目用于测试但由于某种原因,每次第1项缺少html.beginform功能。 例如,查看源我对第一项有这个:
与第一张图片相比,我有第二项的结构:
知道我们在这里缺少什么,为什么每次第一项缺少表格块?
提前致谢,Laziale
答案 0 :(得分:0)
我不确定为什么会发生这种情况,但嵌套的表单标签在HTML中无效,所以我的猜测是这种情况在MVC中也不受支持。它仍然很奇怪,它会在第一项而不是其他项目上失败。
我确定有解决方法,您可以手动构建内部标记,但是考虑到它不能正确回发,我认为您可能想在这里尝试不同的方法。
我建议完全删除外部表单标记,或者使用不同的帖子机制,例如使用与JavaScript结合的操作链接来避免这一切的形式机制。