剃刀未渲染多个Html.BeginForm()

时间:2018-11-27 00:35:15

标签: asp.net-mvc razor

我有一个使用T4template的剃须刀页面。这是我的剃须刀代码:

@model ResearchViewModel

<form method="POST" action=">

...

    @if (!Model.IsFinalized)
    {
        using (Html.BeginForm(MVC.Research.ActionNames.Reject, MVC.Research.Name, null, FormMethod.Post, new { @id = "RejectForm" }))
        {
            @Html.AntiForgeryToken()
            @Html.HiddenFor(model => model.Id)
        }
        using (Html.BeginForm(MVC.Research.ActionNames.Accept, MVC.Research.Name, null, FormMethod.Post, new { @id = "AcceptForm" }))
        {
            @Html.AntiForgeryToken()
            @Html.HiddenFor(model => model.Id)
        }
    }

    ...

</form>

问题是,当剃刀呈现此页面时,它无法呈现第一个表格!我试图更改这些表格的顺序,发现总是不呈现第一个表格。我也尝试使用partialview分隔这些形式,但是问题仍然存在。有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:2)

您正在尝试嵌套多个表单,但不能这样做。有关说明,请参见此链接:Can you nest html forms?

您需要删除起始HTML

<form method="POST" action=">

因为里面没有其他形式。我想这是由razor Html helper创建的第一个表单的结束标签正在关闭此标签,因此您可以看到由第二个razor Html helper创建的另一种表单