Html.BeginForm与HTML属性在ASP.NET MVC4中的应用

23

我在使用 Html.BeginForm 的编辑操作。如何添加HTML属性?

我只知道一种方法:

@using (Html.BeginForm("Edit", "Clients", FormMethod.Post, new { @class="example"})) {

}

但如果我使用这种方法,就无法传递当前的ID。

是否有可能在不修改操作URL的情况下向表单添加HTML属性?


您是否正在使用强类型视图? - COLD TOLD
是的........................... - Irakli Lekishvili
1
当前的 ID 是什么,为什么不能传递它? - gdoron
你想使用哪种HTTP方法?如果需要的话,你可以轻松地指定FormMethod.Get或其他方法,而不是在这里使用FormMethod.Post - Sergey Kudriavtsev
那么,为什么从您传递的模型中获取ID会成为一个问题呢? - COLD TOLD
3
为什么不加一个逗号再添加一个id属性呢?你可以像这样附加多个属性:@using (Html.BeginForm("Edit", "Clients", FormMethod.Post, new { @class="example", id = Model.Id})) 这是您要找的吗?或者问题确切在哪里? - Abhijit-K
4个回答

40

您需要的覆盖是:

@using( Html.BeginForm("Edit", "Clients", new { Id=Model.Id},
                       FormMethod.Post, new { @class = "example" } ) )
{
}
  • 路由值(如“id”)作为第三个参数传递。
  • HTML属性(如“class”)作为第五个参数传递。

请参阅MSDN文档


1
当然,您也可以在第5个参数对象中传递@id="blah",这将完全不同地设置呈现表单标记的HTML id。 - CrazyPyro
1
如果您想要发布到当前控制器的相同操作(Post方法),则前两个参数可以为空,例如:@using(Html.BeginForm(null, null, new {Id=Model.Id}, FormMethod.Post, new {@class = "example"})) - Zeeshan Ali

21

操作和控制器参数也可以为空,以使用默认操作:

Html.BeginForm( null, null, FormMethod.Post, new { id=”formname”, @class="formclass" })

确实如此。 - ARr0w

2

从ControllerA通过ActionLink调用

@using (Html.BeginForm("Create",
    "StudentPChoice",
    new { StudentPChoiceId = Model.StudentPChoiceId },
    FormMethod.Post))
{

}

或者

@using (Html.BeginForm("Create",
    "ControllerB",
    new { ControllerBId = Model.ControllerAId },
    FormMethod.Post))
{

}

0
如果这对某些人有帮助,这对我有效:
@using (Html.BeginForm("RefreshData", "Home", FormMethod.Post, 
        new { Id = "timerangeId", @name = "timerange" }))
    {
        // form elements and input
    }

在Javascript中:

document.getElementById("timerangeId").submit();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接