无法从iframe中找到FileHiddenName

use*_*789 12 javascript asp.net iframe jquery

我正在使用iframe上传图片.所以我有两个文件 - iframe文件和显示图像的文件.单击显示iframe的链接时,将运行以下代码:

function ShowUploadImageOut(RecordID) {
    $('#<%=hfPieceID.ClientID %>').val(RecordID);
    $("#dvAddImageOutturn").html(
        '<iframe id="iframeUpload" src="utilities/UploadPOD.aspx?id=uploadOutturn"></iframe>'
    );
}
Run Code Online (Sandbox Code Playgroud)

在iframe上是一个上传按钮,用于将图像保存到计算机上的文件夹中并将图像文件名设置为 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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

FileNameHidden将属性clientidmode设置为"static":

<input type="hidden" id="FileNameHidden" runat="server" clientidmode="Static" />
Run Code Online (Sandbox Code Playgroud)

返回显示图像的页面上有一个保存按钮.此按钮从中获取值FileNameHidden并将其设置为隐藏字段.这个新的隐藏字段用于将文件名保存到数据库:

<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;
}
Run Code Online (Sandbox Code Playgroud)

问题在于GetPieceOutturnfile功能.$('#iframeUpload').contents().find('#FileNameHidden').length始终为零.它应该是FileNameHidden从iframe中找到的.

通过我可以看到的代码FileNameHidden肯定会设置图像的名称:

<input name="FileNameHidden" type="hidden" id="FileNameHidden" value="test.jpg">
Run Code Online (Sandbox Code Playgroud)

所以我不明白为什么它说长度为零

use*_*789 6

问题出在btnPieceHubUpdateImage以下方面onClientClick:

OnClientClick="CloseUploadWindow();
return GetPieceOutturnFilename();"
Run Code Online (Sandbox Code Playgroud)

它先关闭窗口,然后尝试FileNameHidden从iframe中保存.交换这些以便它GetPieceOutturnFileName首先解决问题.