如何将ID属性添加到ASP.NET MVC中的Html.BeginForm()?


210

我想使用jquery验证我的表单,但是ID截至目前还没有属性,如何将其添加到asp.net mvc中的表单?我正在使用这个...

<% using (Html.BeginForm()) {%>

我的jquery验证程序插件接受了这个,

var validator = $("#signupform").validate({

现在我想给id作为signupform...任何建议...


2
好问题,与jquery无关
Don Rolling

Answers:


348

这应该添加ID。

ASP.NET MVC 5及更低版本:

<% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "signupform" }))
   { } %>

ASP.NET Core:可以在表单中使用标记帮助程序,以避免设置id的语法奇怪。

<form asp-controller="Account" asp-action="Register" method="post" id="signupform" role="form"></form>

4
为什么动作和控制器在那里为空?您能解释一下吗?
ACP 2010年

7
我不知道您要在哪里发布表单,所以我只是将它们设置为空。
杰森·罗

8
同样,将动作和控制器设置为null可以使您不必对它们进行硬编码。如果您将表单放在部分视图中,并且该部分在多个视图(例如“创建”和“编辑”)中使用,这将很有用。
Ken Pespisa

1
在哪里可以找到所有HTML助手的API或文档?例如,在哪里可以找到参数代表什么?
Zapnologica

2
@Zapnologica看看此msdn.microsoft.com/en-us/library/dd460542%28v=vs.108%29.aspx。htmlAttributes参数由一个包含名称/值对的对象组成。new {id =“ myid”,@ class =“ myclass”}
Jason Rowe

7

我已经在项目中添加了一些代码,因此更加方便。

HtmlExtensions.cs:

namespace System.Web.Mvc.Html
{
    public static class HtmlExtensions
    {
        public static MvcForm BeginForm(this HtmlHelper htmlHelper, string formId)
        {
            return htmlHelper.BeginForm(null, null, FormMethod.Post, new { id = formId });
        }

        public static MvcForm BeginForm(this HtmlHelper htmlHelper, string formId, FormMethod method)
        {
            return htmlHelper.BeginForm(null, null, method, new { id = formId });
        }
    }
}

MySignupForm.cshtml:

@using (Html.BeginForm("signupform")) 
{
    @* Some fields *@
}

5

System.Web.Mvc.Html (在System.Web.Mvc.dll中)中,开始形式的定义如下:- 详细信息

BeginForm(此HtmlHelper htmlHelper,字符串actionName,字符串
controllerName,对象routeValues,FormMethod方法,对象htmlAttributes)

意味着您应该这样使用:

Html.BeginForm(字符串actionName,字符串controllerName,对象routeValues,FormMethod方法,对象htmlAttributes)

因此,它在MVC 4中起作用

@using (Html.BeginForm(null, null, new { @id = string.Empty }, FormMethod.Post,
    new { @id = "signupform" }))
{
    <input id="TRAINER_LIST" name="TRAINER_LIST" type="hidden" value="">
    <input type="submit" value="Create" id="btnSubmit" />
}

4

可能有点晚了,但就我而言,我不得不将id放在第二个匿名对象中。这是因为第一个用于路由值,即返回Url。

@using (Html.BeginForm("Login", "Account", new {  ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { id = "signupform", role = "form" }))

希望这可以帮助某人:)

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.