我想用jquery验证我的表单,但它没有ID属性,目前如何将其添加到asp.net mvc的形式?我正在用这个…

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

我的jquery验证器插件接受这个,

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

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


当前回答

我已经在我的项目中添加了一些代码,所以它更方便。

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 *@
}

其他回答

可能有点晚了,但在我的情况下,我不得不把id放在第二个匿名对象。 这是因为第一个是路由值,即返回Url。

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

希望这能帮助到一些人:)

我已经在我的项目中添加了一些代码,所以它更方便。

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 *@
}

这应该会添加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>

在System.Web.Mvc.Html(在System.Web.Mvc.dll)中,开始表单的定义如下

这个HtmlHelper HtmlHelper,字符串actionName,字符串 controllerName,对象routeValues, FormMethod方法,对象 htmlAttributes)

意思是你应该这样使用:

超文本标记语言BeginForm(string actionName, string 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" />
}