2012-06-10 14 views
16

Ho Modifica azione con Html.BeginForm. Come posso aggiungere attributi HTML?Html.BeginForm con attributi html asp.net mvc4

Conosco un solo modo:

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

} 

ma se uso questo metodo non può passare ID corrente

E 'possibile aggiungere attributi HTML per formare senza modificare URL azione?

+0

stai usando fortemente vista digitata –

+0

Sì ........................... –

+1

Qual è il ID corrente e perché non puoi passarlo? – gdoron

risposta

32

L'override che vi serve è:

@using(Html.BeginForm("Edit", "Clients", new { Id=Model.Id}, 
         FormMethod.Post, new { @class = "example" })) 
{ 
} 
  • valori del percorso come "id" sono passati come terzo parametro.
  • Gli attributi HTML come "classe" vengono passati come quinto parametro.

Vedere MSDN doc.

+1

Ovviamente puoi anche passare '@ id =" blah "' nel quinto oggetto parametro, che avrà l'effetto completamente diverso di impostare l'id HTML del tag del modulo renderizzato. – CrazyPyro

+0

I primi due parametri possono essere nulli se si desidera pubblicare sulla stessa azione (metodo Post) del controller corrente come: '@using (Html.BeginForm (null, null, new {Id = Model.Id}, FormMethod.Post , nuovo {@class = "esempio"})) ' –

2

Calling attraverso un ActionLink da ControllerA

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

} 

O

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

} 
0

I parametri di azione e del controller può anche essere nullo di utilizzare l'azione di default:

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