如何使用Html.BeginForm()命名表单?


79

如何使用ASP.NET MVC中的表单命名Html.BeginForm()我只想要名称,而不想要动作或控制器名称,因为我想通过Javascript发布它。我认为应该是这样的Html.BeginForm(id = "frm")

我尝试了以下方法:

Html.BeginForm(null,null,new{id="frm",name="frm})

Html.BeginForm(new{@id="frm",@name="frm})

但是上面的代码会产生如下输出:

<form action="/Main/Index/Id?name=Id" method="post">

Answers:


136
Html.BeginForm(null, null, FormMethod.Get, new { name = "frm", id = "frm" })

您需要使用JavaScript捕获表单提交


1
谢谢但是您的解决方案产生此代码<form action =“ / Main / Index / frm?name = frm” method =“ post”>
user426306 2010年

谢谢,它的工作人再次感谢
user426306

3
对我有很大帮助,您的博客也是一种享受。感谢BritishDeveloper :)
Hallaghan 2012年

确保在GET或POST之后放置id =“ frm”,否则id值将传递给控制器​​(如果有)。
休·希格雷夫斯

9

使用MVC2,这对我有用:

<% using (Html.BeginForm("Index", "Home", null, FormMethod.Post, new {@id = "myForm", @name = "myForm"})) {%>

0
@HTML.BeginForm("Target-ViewName where you want to post the page","Controller Name",new {@name="Name of the Form", id="ID of the Form"}) 
{ //form here
}

1
我认为不是“要在其中发布页面的Target-ViewName”,而是“您要在其中发布数据的Target操作方法”。
萨钦·凯恩

-3

从以下答案中获取:如何通过Html.BeginForm()传递ID?

你不能只是做:

Html.BeginForm(new {@id="Id", @name="Id"}); 

我已经找到了许多我想问的事情,因此可以在SO中寻找答案是值得的。


您正在添加路线值。不是html属性
BritishDeveloper

我看到了您在传递null的地方的答案,我确实认为您可以只对命名参数使用默认值,并传递附加属性列表以附加到输出HTML
Paul Hadfield 2010年

我之前尝试过您的解决方案,但它会生成类似“ <form action =“ / Main / Index / Id?name = Id” method =“ post”>“的代码
user426306 2010年

抱歉,我确实认为那是它的工作方式-显然不是。在这种情况下,这可能是一个何时提供您自己的HTML扩展方法的好例子,或者只是何时恢复为旧的HTML。
Paul Hadfield's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.