235 votes

Comment ajouter la propriété ID à Html.BeginForm() dans asp.net mvc?

Je veux valider mon formulaire en utilisant jQuery mais il n'a pas de propriété ID pour le moment comment l'ajouter au formulaire dans asp.net mvc? Je suis en train d'utiliser ceci...

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

et mon plugin de validation jQuery prend ceci,

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

Maintenant je veux donner un id comme signupform... Des suggestions...

2 votes

Bonne question, n'a rien à voir avec jQuery

386voto

Jason Rowe Points 2582

Cela devrait ajouter l'identifiant.

ASP.NET MVC 5 et inférieur :

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

ASP.NET Core : Vous pouvez utiliser des assistants de balises dans les formulaires pour éviter la syntaxe bizarre pour définir l'identifiant.

4 votes

Pourquoi l'action et le contrôleur sont-ils nuls ici? Pourriez-vous l'expliquer s'il vous plaît?

7 votes

Je ne sais pas où tu veux poster le formulaire, donc je les ai simplement mis à null.

8 votes

Avoir également l'action et le contrôleur définis sur null vous évite d'avoir à les coder en dur. Cela est utile si vous avez votre formulaire dans une vue partielle et que cette vue partielle est utilisée dans plusieurs vues telles que Créer et Modifier.

7voto

ADM-IT Points 139

J'ai ajouté du code à mon projet, c'est donc plus pratique.

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")) 
{
    @* Certains champs *@
}

6voto

Dans System.Web.Mvc.Html (dans System.Web.Mvc.dll), le formulaire de début est défini comme suit : Détails

BeginForm ( cet HtmlHelper htmlHelper, string actionName, string
controllerName, objet routeValues, FormMethod method, objet htmlAttributes)

Cela signifie que vous devriez l'utiliser comme ceci :

Html.BeginForm( string actionName, string controllerName, objet routeValues, FormMethod method, objet htmlAttributes)

Donc, cela fonctionnait en MVC 4

@using (Html.BeginForm(null, null, new { @id = string.Empty }, FormMethod.Post,
    new { @id = "signupform" }))
{

}

6voto

Daniaal Points 196

Peut-être un peu tard mais dans mon cas j'ai dû mettre l'id dans le 2ème objet anonyme. Cela est dû au fait que le 1er est pour les valeurs de route, c'est-à-dire l'URL de retour.

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

J'espère que cela pourra aider quelqu'un :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X