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

Ric*_*d77 19 asp.net-mvc razor

我将开始/结束表单语句放在布局页面中,这样我就不必在几个页面上重复它.下面是代码的简化版本.

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

    <input type = "submit" name = "nextButton" value = "Next-->" />
}
Run Code Online (Sandbox Code Playgroud)

事情进展顺利.不幸的是,我有一个页面有几个" 删除 "按钮.我想为每个删除按钮生成一个表单,以便它可以将要删除的项目的ID发送回控制器.

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

谢谢你的帮助

Eri*_*sch 20

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

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

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


Mrc*_*ief 8

请注意,根据W3规范,不允许嵌套表单

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

有一个关于嵌套形式告诫的interseting文章在这里.

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

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