net asp c# asp.net file-upload updatepanel

c# - asp - FileUpload.PostedFile siempre nulo dentro de UpdatePanel



asyncfileupload (4)

Este es un problema antiguo que se remonta a MSAjax 1.0. El control FileUpload no es compatible con la forma en que funcionan los paneles de actualización y el administrador de scripts. La carga de un archivo modifica la secuencia de datos que causa el ahogador del administrador de scripts. La única forma en que funcionará es tener el Control de carga de archivos fuera del panel de actualización. Si tiene otros controles en la página que dependen del control de carga del archivo, debe configurar el agregar un activador PostBack.

Tengo un control FileUpload dentro de un UpdatePanel. He registrado correctamente el botón de carga con el administrador de scripts para hacer una devolución de datos completa. El único problema que tengo es que FileUpload.HasFile siempre devuelve nulo. Nota: Cuando muevo el control FileUpload fuera del panel de actualización todo funciona. ¿Hay alguna solución o solución para esto?

Gracias.


FileUpload no funciona dentro de un UpdatePanel. Debe usar AsyncFileUpload desde el kit de herramientas de control AJAX de ASPNET.

Cuando utiliza AsyncFileUpload, debe establecer los parámetros correctos en la etiqueta de formulario , que se coloca en su página o página maestra:

<form id="form1" runat="server" enctype="multipart/form-data" method="post">

Si no configura el enctype y el método correctos UploadedComplete nunca se activará , y no podrá obtener FileUpload.FileBytes ya que FileUpload.HasFile devuelve verdadero solo durante la ejecución de UploadedComplete.

Además, las versiones previas de AsyncFileUpload no funcionaban en Chrome. La versión real (4.1.50731.0) resolvió el problema.


Puede poner un control FileUpload en un UpdatePanel, pero debe usar un PostBackTrigger en lugar de un AsyncPostBackTrigger. Recientemente utilicé este enfoque y combiné ambos tipos de disparador.

<Triggers> <asp:PostBackTrigger ControlID="btnSave" /> <asp:AsyncPostBackTrigger ControlID="btnAsyncSave"/> </Triggers>

PostBackTrigger se usó para FileUploads mientras que AsyncPostBackTrigger se usó para todos los demás campos de formulario.


<Triggers> <asp:PostBackTrigger ControlID="btnSave" /> </Triggers>

tener el Control de carga de archivos fuera del panel de actualización. Si tiene otros controles en la página que dependen del control de carga del archivo, debe configurar el agregar un activador PostBack.