web-dev-qa-db-fra.com

Html.BeginForm avec attributs HTML asp.net mvc4

J'ai modifier l'action avec Html.BeginForm. Comment puis-je ajouter des attributs HTML?

Je ne connais qu'un moyen:

@using (Html.BeginForm("Edit", "Clients", FormMethod.Post, new { @class="example"})) {

}

mais si j'utilise cette méthode, je ne peux pas passer l'ID actuel 

Est-il possible d'ajouter des attributs HTML au formulaire sans modifier l'URL de l'action?

21
Irakli Lekishvili

Le remplacement dont vous avez besoin est:

@using( Html.BeginForm("Edit", "Clients", new { Id=Model.Id},
                       FormMethod.Post, new { @class = "example" } ) )
{
}
  • Les valeurs d'itinéraire telles que "id" sont transmises en tant que troisième paramètre.
  • Les attributs HTML tels que "classe" sont passés en tant que cinquième paramètre.

Voir MSDN docs.

36
Ross McNab

Les paramètres Action et Controller peuvent également être null pour utiliser l'action par défaut:

Html.BeginForm( null, null, FormMethod.Post, new { id=”formname”, @class="formclass" })
7
D Monk

Appel via un ActionLink de ControllerA

@using (Html.BeginForm("Create",
    "StudentPChoice",
    new { StudentPChoiceId = Model.StudentPChoiceId },
    FormMethod.Post))
{

}

OU 

@using (Html.BeginForm("Create",
    "ControllerB",
    new { ControllerBId = Model.ControllerAId },
    FormMethod.Post))
{

}
2
Oracular Man

Si cela peut être utile pour certaines personnes, cela fonctionne pour moi:

@using (Html.BeginForm("RefreshData", "Home", FormMethod.Post, 
        new { Id = "timerangeId", @name = "timerange" }))
    {
        // form elements and input
    }

En Javascript:

document.getElementById("timerangeId").submit();
0
Mayer Spitzer