Sto utilizzando un iframe per caricare un'immagine. Quindi ho due file: il file per l'iframe e il file che visualizzerà l'immagine. Quando il collegamento per visualizzare l'iframe viene cliccato questo codice viene eseguito:Impossibile trovare FileHiddenName da iframe
function ShowUploadImageOut(RecordID) {
$('#<%=hfPieceID.ClientID %>').val(RecordID);
$("#dvAddImageOutturn").html(
'<iframe id="iframeUpload" src="utilities/UploadPOD.aspx?id=uploadOutturn"></iframe>'
);
}
Sulla iframe è un pulsante di caricamento che salva l'immagine in una cartella sul computer e imposta il nome del file immagine per FileNameHidden
protected void btnUpload_Click(object sender, EventArgs e)
{
if (fuUpload.HasFile)
{
if (Request.QueryString["id"] == "uploadOutturn")
{
String Path = ConfigurationManager.AppSettings["PieceOutturnFolder"].ToString()
+ Company.Current.CompCode;
string FileName = fuUpload.FileName;
if (File.Exists(Path + "/" + FileName))
{
File.Delete(Path + "/" + FileName);
}
fuUpload.SaveAs(Path + "/" + FileName);
filename = FileName;
imgTemp.ImageUrl = "/thumbnail.ashx?ImgFilePath=" + Path.Replace("/", "\\")
+ "\\" + FileName + @"&width=200&height=400";
FileNameHidden.Value = FileName;
}
}
}
FileNameHidden
ha la proprietà clientidmode
insieme a "static"
:
<input type="hidden" id="FileNameHidden" runat="server" clientidmode="Static" />
Ritornare alla pagina per la visualizzazione th L'immagine è un pulsante Salva. Questo pulsante prende il valore da FileNameHidden
e lo imposta in un campo nascosto. Questo nuovo campo nascosto viene utilizzato per salvare il nome del file al database:
<asp:HiddenField ID="hfUploadedPieceHubImageFile" runat="server" />
<div id="dvAddEditImageOutturn" class="dvdraggable">
<div id="dvAddImageOutturn"></div>
<asp:LinkButton ID="btnPieceHubUpdateImage"
onclick="btnUpdatePieceImage_Click"
OnClientClick="CloseUploadWindow();return GetPieceOutturnFilename();"
CssClass="btnSaveSmall"
runat="server"
></asp:LinkButton>
</div>
function GetPieceOutturnFilename() {
if ($('#iframeUpload').contents().find('#FileNameHidden').length > 0) {
$("#<%= hfUploadedPieceHubImageFile.ClientID %>").val(
$('#iframeUpload').contents().find('#FileNameHidden').val()
);
}
return true;
}
Il problema è nella funzione GetPieceOutturnfile
. $('#iframeUpload').contents().find('#FileNameHidden').length
è sempre zero. Dovrebbe trovare il numero FileNameHidden
dall'iframe.
Andando attraverso il codice posso vedere FileNameHidden
sicuramente viene impostata il nome dell'immagine:
<input name="FileNameHidden" type="hidden" id="FileNameHidden" value="test.jpg">
Quindi non capisco perché si dice la lunghezza è pari a zero
ok Ho provato a modificare la funzione GetPieceOutturnFileName sul codice ma non entra nel '$ (" # iframeUpload "). Load (function() {' quindi vuol dire che non sta trovando l'iframe? Ho aggiunto il modifica Ho apportato la funzione alla mia domanda – user123456789
La funzione di caricamento era un requisito del mio esempio di base. Senza caricare il fileName restituirebbe null perché i contenuti iframe sarebbero ancora in fase di caricamento quando è stato chiamato. È difficile per me dire come l'applicazione funziona esaminando i frammenti di codice casuali nella tua domanda.Se potresti fornire un collegamento a una versione di base della tua applicazione, sarebbe molto più facile per le persone diagnosticare il tuo problema. –
@ user123456789 Ho dato un'occhiata ai file .C'è molto in là e non ero in grado di eseguirlo a causa di non avere le dipendenze richieste. Ti suggerirei di semplificare lo scenario creando una versione html di base della pagina con cui stai riscontrando un problema. Mantieni solo la funzionalità che stai cercando di eseguire il debug. Simile alla mia risposta sopra. Se riesci a far si che il problema si verifichi in un jsfiddle funzionante, la gente probabilmente capirà subito il problema. –