Asp.NET upload med ajax (Asp.net ajax updatepanel)

August 16th, 2009

sprFor de som prøver å laste opp en fil med en ASP.net upload control, vil oppleve at deres kontroller alltid er tom. Dette fordi kontrolleren ikke støtter å bli brukt i et updatepanel.
For å løse dette må følgende gjøres:

I page_load på siden hvor upload-kontrolleren ligger:

ScriptManagerId.RegisterPostBackControl(ButtonSaveID);

Gitt siden din bruker master pages, og scriptmanageren ligger på denne kan du gjøre tilsvarende fra en content page:

((ScriptManager)this.Master.FindControl(“ScriptManagerID”)).RegisterPostBackControl(ButtonSaveID);

Videre:
Upload-kontrolleren har en max-grense på 4MB. For å øke denne må web.config overstyre machine.config sin maxRequestLength.

Følgende viser hvordan en kan øke max-størrelsen på filer til 20MB:

<system.web>
<httpRuntime executionTimeout=”240″ maxRequestLength=”20480″ />
</system.web>

In English:
If you try to use an upload control inside an updatepanel, you will always get an empty control back with it’s properties unset.
To enable the usage of a Asp.NET upload control inside an updatepanel, you need to register a postback control on the scriptmanager. This can be done with the codes written above.

Also, in order to increase the max size limit, edit your web.config like stated above.

Leave a Reply