2010-05-18 96 views
175

Quiero validar mi formulario utilizando jquery pero no tiene una propiedad ID a partir de ahora cómo agregarlo al formulario en asp.net mvc? Estoy usando este ...Cómo agregar propiedad de ID a Html.BeginForm() en asp.net mvc?

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

y mi validador plugin de jQuery toma esto,

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

Ahora quiero dar a ello como signupform ... Cualquier sugerencia ...

+2

Buena pregunta, no tiene nada que ver con jQuery –

Respuesta

284

Este debería obtener el ID agregado.

ASP.NET MVC 5 e inferior:

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

ASP.NET Core: Puede use tag helpers in forms para evitar la sintaxis extraña para configurar la ID.

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

por qué la acción y el controlador son nulos allí? ¿Podrías explicarlo por favor? –

+6

No sé dónde quiere publicar el formulario, así que lo hice nulo. –

+8

Además, tener la acción y el controlador en nulo le evita tener que codificarlos.Esto es útil si tiene su formulario dentro de una vista parcial y ese parcial se usa en varias vistas como Crear y Editar. –

6

He agregado un código a mi proyecto, por lo que es más 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 *@ 
} 
4

En System.Web.Mvc.Html (en System.Web.Mvc.dll) al comenzar formulario se define como: - Details

BeginForm (Esto HtmlHelper HtmlHelper, actionName secuencia, secuencia de
controllerName, routeValues ​​objeto, método FormMethod, objeto htmlAttributes)

significa que debe utilizar la siguiente manera:

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

Así, se trabajó en 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" /> 
} 
1

Puede ser un poco tarde, pero en mi caso tuve que poner el id en el segundo objeto anónimo. Esto es porque el primero es para valores de ruta, es decir, la URL de retorno.

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

Esperamos que esto pueda ayudar a alguien :)

Cuestiones relacionadas