2009-11-23 7 views
21

mi piace la pulizia delleHtml.BeginForm e attributi HTML w/o specificando Controller e azione

using (Html.BeginForm()) 

e odio che l'aggiunta di attributi HTML richiede specificando il controller, l'azione, e il metodo di modulo.

using (Html.BeginForm("Action", "Controller", FormMethod.Post, 
    new { id = "inactivate-form" }) 

C'è un modo per utilizzare Html.BeginForm e specificare gli attributi HTML per il modulo senza cablaggio manualmente tutto il resto in su?

risposta

16

Perché non dovresti usare semplicemente html?

<form id="inactivate-form" method="post" > 
</form> 
+1

questo è esattamente ciò che i nuovi utilizzatori di ASP.NET MVC deve capire. Non deve essere tutto il codice. :) – CodeMonkey

+0

Nessun motivo se non provare a seguire degli esempi. Preferisco il tuo metodo suggerito per 'Html.BeginForm'. @CodeMonkey come si può dire che sono un nuovo utente di ASP.NET MVC? :) – ahsteele

+3

In realtà ho trovato il modo difficile che se non si utilizza BeginForm, la convalida lato client non funzionerà perché altrimenti non verrà "collegata". –

10

è possibile creare un'estensione personalizzata che aggiunge un modulo di 'Id-ed':

public static MvcForm BeginIdedForm(this HtmlHelper htmlHelper, string id) 
{ 
    return htmlHelper.BeginForm(null, null, FormMethod.Post, new Dictionary<string, object>() { { "id", id } }); 
} 

Usage poi basta diventa

using(Html.BeginIdedForm("inactiveate-form")) 
Problemi correlati