Como adicionar propriedade ID ao Html.BeginForm () no asp.net mvc?


210

Eu quero validar meu formulário usando jquery, mas ele não tem uma IDpropriedade, no momento, como adicioná-lo ao formulário no asp.net mvc? Eu estou usando isso ...

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

e meu plugin validador jquery aceita isso,

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

Agora eu quero dar id como signupform... Qualquer sugestão ...


2
Boa pergunta, não tem nada a ver com jquery
Don Rolando

Respostas:


349

Isso deve adicionar o ID.

ASP.NET MVC 5 e inferior:

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

ASP.NET Core: você pode usar auxiliares de marca em formulários para evitar a sintaxe ímpar para definir a identificação.

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

4
por que ação e controlador são nulos lá? Você poderia explicar isso por favor?
ACP

7
Não sei onde você deseja postar o formulário, então apenas os nulo.
Jason Rowe

8
Também ter a ação e o controlador definidos como nulo evita que você precise codificá-los. Isso é útil se você tiver seu formulário em uma visualização parcial e essa parcial for usada em várias visualizações, como Criar e Editar.
Ken Pespisa

1
Onde se encontra a API ou a documentação de todos os auxiliares html? Por exemplo, onde descobrir quais são os parâmetros?
Zapnologica 14/07

2
@Zapnologica Dê uma olhada neste msdn.microsoft.com/en-us/library/dd460542%28v=vs.108%29.aspx . O parâmetro htmlAttributes consiste em um objeto que contém pares de nome / valor. novo {id = "myid", @ class = "myclass"}
Jason Rowe

7

Eu adicionei algum código ao meu projeto, por isso é mais conveniente.

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

Em System.Web.Mvc.Html (em System.Web.Mvc.dll ), o formulário inicial é definido como: - Detalhes

BeginForm (este HtmlHelper htmlHelper, string actionName, string
controllerName, objeto routeValues, método FormMethod, objeto htmlAttributes)

Significa que você deve usar assim:

Html.BeginForm (string actionName, string controllerName, objeto routeValues, método FormMethod, objeto htmlAttributes)

Então, funcionou no 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

Pode ser um pouco tarde, mas no meu caso eu tive que colocar o id no segundo objeto anônimo. Isso ocorre porque o primeiro é para valores de rota, ou seja, o URL de retorno.

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

Espero que isso possa ajudar alguém :)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.