mvc4 razor视图中的一个属性中缺少html.beginform

时间:2014-03-11 16:15:20

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我有这个剃刀观点:

@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功能。 例如,查看源我对第一项有这个:

enter image description here

与第一张图片相比,我有第二项的结构:

enter image description here

知道我们在这里缺少什么,为什么每次第一项缺少表格块?

提前致谢,Laziale

1 个答案:

答案 0 :(得分:0)

我不确定为什么会发生这种情况,但嵌套的表单标签在HTML中无效,所以我的猜测是这种情况在MVC中也不受支持。它仍然很奇怪,它会在第一项而不是其他项目上失败。

我确定有解决方法,您可以手动构建内部标记,但是考虑到它不能正确回发,我认为您可能想在这里尝试不同的方法。

我建议完全删除外部表单标记,或者使用不同的帖子机制,例如使用与JavaScript结合的操作链接来避免这一切的形式机制。