【问题标题】:asyncfileupload in jquery modal popupjquery模式弹出窗口中的asyncfileupload
【发布时间】:2012-01-27 13:53:27
【问题描述】:

我在 jquery 模态弹出窗口上放置了一个 AsyncFileUpload 控件,当上传正常时,我无法触发“AsyncFileUpload1_UploadedComplete”。

直接放在页面上时它确实有效。 (顺便说一句,这些都在母版页上)

相关代码是

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc2" %>

    <script type="text/javascript" language="javascript">

    function uploadError(sender, args) {
        alert(args.get_errorMessage());
        document.getElementById('<%=lblStatus.clientid %>').innerText = args.get_fileName(), "<span style='color:red;'>" + args.get_errorMessage() + "</span>";
    }

    function StartUpload(sender, args) {
        document.getElementById('<%=lblStatus.clientid %>').innerText = 'Uploading Started.';
    }

    function UploadComplete(sender, args) {
        var filename = args.get_fileName();
        var contentType = args.get_contentType();
        var text = filename + " has been uploaded successfully. Size: " + args.get_length() + " bytes";
        document.getElementById('<%=lblStatus.clientid %>').innerText = text;
    }

</script>

       <cc2:AsyncFileUpload ClientIDMode="AutoID" ID="AsyncFileUpload1" runat="server" OnClientUploadError="uploadError"
                    OnClientUploadStarted="StartUpload" OnClientUploadComplete="UploadComplete" CompleteBackColor="Lime"
                    UploaderStyle="traditional" ErrorBackColor="Red" ThrobberID="Throbber" OnUploadedComplete="AsyncFileUpload1_UploadedComplete"
                    UploadingBackColor="#66CCFF" />
                <asp:Label ID="Throbber" runat="server" Style="display: none">
                            <img src="images/icons/ajax-loader.gif" style="vertical-align:middle"  alt="loading" />
                </asp:Label>&nbsp;
                <asp:Label ID="lblStatus" runat="server" Style="font-family: Arial; font-size: small;"></asp:Label>

就像我说的那样,直接放在母版页上时确实有效,但在与作为模式弹出窗口的 div 一起放置时不起作用。 我已经设置好了

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

背后的代码:

Protected Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs)
    If AsyncFileUpload1.HasFile Then
        txtRef.Text = "1234"
        If IO.Directory.Exists(Server.MapPath("~\uploads\" & txtRef.Text)) = False Then
            IO.Directory.CreateDirectory(Server.MapPath("~\uploads\" & txtRef.Text))
        End If
        Dim strPath As String = MapPath("~/Uploads/" & txtRef.Text & "/") & IO.Path.GetFileName(e.FileName)
        AsyncFileUpload1.SaveAs(strPath)
        Dim attach As New attachment
        attach.CallID = txtRef.Text
        attach.Filename = IO.Path.GetFileName(e.filename)
        attach.Ext = System.IO.Path.GetExtension(e.filename)
        attach.UserID = Session("user_id")
        attach.Create()
    End If
End Sub

在表单标签中但仍然没有运气,我已将 ajaxtoolkit 升级到最新版本。

有什么想法吗?

谢谢,

【问题讨论】:

    标签: asp.net jquery-ui ajaxcontroltoolkit asyncfileupload


    【解决方案1】:

    这是因为 jQuery 在创建对话框时从表单中删除了控件并将其放在正文的末尾。当它提交表单时,AsyncFileUpload 控件不再在表单中,因此该控件没有任何内容可以回发到服务器,这就是它不回发文件的原因。 你需要做的是在jQuery创建它之后将对话框div放回表单中。

            $('#yourDialogID').parent().appendTo('form');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多