2008-10-19 17 views

Respuesta

231

Como parte de htmlAttributes, por ejemplo.

Html.BeginForm(
    action, controller, FormMethod.Post, new { enctype="multipart/form-data"}) 

O puede pasar null para la acción y el controlador para conseguir el mismo objetivo por defecto como por BeginForm() sin ningún parámetro:

Html.BeginForm(
    null, null, FormMethod.Post, new { enctype="multipart/form-data"}) 
+43

Así como una nota, puede pasar null para la acción y el controlador para conseguir el mismo objetivo por defecto que BeginForm() sin parámetros da. –

+2

@radio: ¡Buen comentario! Incorporado en el anwer. – chiccodoro

+3

deseo usando parametros nombrados trabajó para esto! –

18

También puede utilizar la siguiente sintaxis para la versión estricta de tipos :

<% using (Html.BeginForm<SomeController>(x=> x.SomeAction(), 
      FormMethod.Post, 
      new { enctype = "multipart/form-data" })) 
    { %> 
+1

no pueden hacer esto en la versión actual (RC1). –

+0

Que es un fastidio masivo :(Entonces, ¿cómo podemos hacer esto? ¿Necesitamos otro dll? MVC futuros o algo así? –

+4

Sí, de hecho ... Creo que todos los métodos fuertemente tipados (basados ​​en expresiones) están en los futuros assembly (http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471). –

12

sé que esto es viejo, pero se podría crear una extensión personalizada si necesita crear esa forma una y otra vez:

public static MvcForm BeginMultipartForm(this HtmlHelper htmlHelper) 
{ 
    return htmlHelper.BeginForm(null, null, FormMethod.Post, 
    new Dictionary<string, object>() { { "enctype", "multipart/form-data" } }); 
} 

Uso continuación, sólo se convierte en

<% using(Html.BeginMultipartForm()) { %> 
+0

una sugerencia! – chiccodoro

Cuestiones relacionadas