是否有可能将一种形式嵌入剃刀中?

时间:2011-08-30 21:27:49

标签: asp.net-mvc razor

我将begin / end form语句放在布局页面中,这样我就不必在几个页面上重复它了。下面是代码的简化版本。

@using(Html.BeginForm())
{
    @RenderBody()

    <input type = "submit" name = "nextButton" value = "Next-->" />
}

事情进展顺利。很遗憾,我的网页上有几个“删除”按钮。我想为每个删除按钮生成一个表单,以便它可以将要删除的项目的ID发送回控制器。

我知道已经有另一种形式了吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:21)

正如先生所说,HTML规范禁止嵌套表格。由于MVC只生成标准HTML,因此您必须在规范框架内工作。

为什么不创建两个主布局,并且大部分时间都使用基于表单的布局,但是当您需要对嵌入表单进行更多控制时,请使用没有表单的布局。

这就是为什么你真的应该只在需要的地方使用表格,而不仅仅是在任何地方。

答案 1 :(得分:8)

请注意,根据W3 specs

,不允许嵌套表单
  

每个表单都必须包含在FORM元素中。可以有   单个文档中的几个表单,但FORM元素不能   嵌套。

有一篇关于嵌套形式here的警告的文章。

在这种情况下,最好为每个按钮生成form,而不是使用单个表单。

ASP.Net网络表单限制您使用runat=server属性在页面上拥有多个表单(并且框架确保每页只允许一个)。 MVC forms是纯HTML,因此您可以拥有多个。