2012-07-20 11 views
5

My QuestionControllo del caricamento file che funziona al secondo clic ma non al primo tentativo di salvataggio del file pubblicato?

Sono riuscito a rispondere a me stesso, tuttavia lo stesso insieme di funzionalità ha un altro problema. Per qualche ragione, il primo postback dell'evento di salvataggio del file postato colpisce l'oggetto Ol 'non impostato su un'istanza di un errore dell'oggetto, ma al secondo tentativo di caricare un file e attivare il mio evento di salvataggio (converte in byte [] e memorizzato come SQL Server BLOB) fa tutto ciò che dovrebbe fare.

Same problem here

C'è una buona idea di utilizzare il controllo di AJAX AsyncUpload però io sono un convinto sostenitore di rimuovere la causa e non trattare il problema. Continuerò su questa strada per meglio comprendere Asp.net ecc.

Ci sarebbe una magica esperienza in mezzo a te che potrebbe aiutarmi a identificare il motivo per cui al primo postback ottengo l'errore "oggetto non impostato su inst di obj" al secondo funziona bene. La pagina di contenuto ha una pagina master che avvolge la pagina di contenuto in un pannello di aggiornamento. Non è la mia decisione di farlo. C'è anche un pannello di aggiornamento con trigger postback che si rivolgono al mio evento di salvataggio.

Quali sono i tuoi pensieri?

risposta

12

Il problema (come si vede qui http://forums.asp.net/t/1060363.aspx) sembra essere quando si utilizza la proprietà di visibilità sul pannello circostante (come sembra che tu sia dalla domanda collegata).

La soluzione suggerita è quella di utilizzare la visibilità CSS invece in modo da utilizzare questo per renderlo invisibile -

<asp:Panel ID="pnlUpload" runat="server" class="workerDetailsPanelLeft" style="display:none"> 

La spiegazione di questo dal thread è

Se il contenitore è impostato su invisibile, il controllo del caricamento non viene effettivamente visualizzato come HTML, pertanto l'enctype del form non deve essere impostato su enctype = "multipart/form-data", in modo che il controllo del caricamento del file non riporti il ​​file selezionato sul server. La soluzione è o per assicurarsi il controllo FileUpload è resa in HTML (impostando il suo stile a display: none in vece di Visible = false), oppure impostando manualmente l'enctype

Quindi un'altra soluzione potrebbe essere quella di modificare il tuo tag modulo a questo

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

Penso che uno di questi dovrebbe risolvere il tuo problema.

+1

Eccellente, ho capito ora. Grazie mille per averlo indicato. Ho chiaramente trascurato. +1 e rispondi :-) – dotnetnewb

4

Si potrebbe fare la stessa cosa tramite codice all'evento Page_Load .. Immettere questo codice e risolverà il problema.

Page.Form.Attributes.Add("enctype", "multipart/form-data"); 
Problemi correlati