web-dev-qa-db-de.com

Html.BeginForm mit HTML-Attributen asp.net mvc4

Ich habe Aktion bearbeiten mit Html.BeginForm. Wie kann ich HTML-Attribute hinzufügen?

Ich kenne nur einen Weg:

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

}

wenn ich jedoch diese Methode verwende, kann ich keine aktuelle ID übergeben 

Kann ich HTML-Attribute hinzufügen, ohne die Aktions-URL zu ändern?

21

Sie benötigen folgende Überschreibung:

@using( Html.BeginForm("Edit", "Clients", new { Id=Model.Id},
                       FormMethod.Post, new { @class = "example" } ) )
{
}
  • Routenwerte wie "id" werden als dritter Parameter übergeben.
  • HTML-Attribute wie "class" werden als fünfter Parameter übergeben.

Siehe MSDN docs.

36
Ross McNab

Die Action- und Controller-Parameter können auch null sein, um die Standardaktion zu verwenden:

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

Aufruf über einen ActionLink von ControllerA

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

}

ODER 

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

}
2
Oracular Man

Wenn dies für manche Menschen hilfreich sein könnte, funktioniert das für mich:

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

In Javascript:

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