ajaxfileupload页面上的多个输入

时间:2013-01-03 02:09:52

标签: c# ajaxcontroltoolkit

我正在使用ajaxFileUpload,如下所述:http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/AjaxFileUpload/AjaxFileUpload.aspx

除非我在同一页面上有多个文件上传控件,否则它工作正常。具体来说,我正在尝试为不同的问题上传不同的文件。当我在页面上传第一个时,它工作正常,但页面下方的那个只会将它的文件上传到第一个问题的答案中。

我不确定这是否有意义...所以它可以帮助您知道我的页面使用ascx文件动态填充问题。文档ascx文件如下所示:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Document.ascx.cs" Inherits="ScholarshipApplication.controls.questions.Document" %>


<ajaxToolkit:AjaxFileUpload OnUploadComplete="UploadComplete"  ID="FileUploadControl" MaximumNumberOfFiles="1" runat="server" AllowedFileTypes="png,jpg,jpeg,pdf,tiff,tif,gif" />
<asp:LinkButton ID="downloadButton" runat="server" CausesValidation="false" OnClick="downloadButton_Click" />

背后的代码:

public void UploadComplete(object sender, AjaxFileUploadEventArgs e)
        {
            entry.data = e.FileName;
            entry.setDocumentData(e.GetContents());

            this.downloadButton.Text = e.FileName;
        }

我最初的想法是,不知怎的,我需要帮助控件生成的javascript知道它应该在什么时候触发的问题。

2 个答案:

答案 0 :(得分:0)

根据我的理解你需要一个隐藏的字段变量来识别你的问题ID在UserControl中:

<input type="hidden" id="hdnQuestionId" runat="server"/>

在填充/生成问题时,您需要设置此变量,并在上传文档时,获取此隐藏值并使用它。

答案 1 :(得分:0)

我在所有AjaxFileUpload控件上创建了一个名为“data-upload-type”的数据属性,并将其设置为该类型的名称。然后我设置客户端调用以获取该值并设置具有相同值的cookie。 cookie是在服务器端函数上接收的,我根据收到的值进行分支。

这是一个例子:

function StartUpload(sender, args) {
    var t = $(sender._element).attr('data-upload-type');
    document.cookie = 'upload-type=' + $(sender._element).attr('data-upload-type') + ';';
}

<asp:AjaxFileUpload ID="afuUploader1" runat="server"  OnClientUploadStart="StartUpload" OnUploadComplete="UploadComplete" OnClientUploadComplete="UploadComplete" data-upload-type="UploadType2"></asp:AjaxFileUpload>

function StartUpload(sender, args) { var t = $(sender._element).attr('data-upload-type'); document.cookie = 'upload-type=' + $(sender._element).attr('data-upload-type') + ';'; } <asp:AjaxFileUpload ID="afuUploader1" runat="server" OnClientUploadStart="StartUpload" OnUploadComplete="UploadComplete" OnClientUploadComplete="UploadComplete" data-upload-type="UploadType2"></asp:AjaxFileUpload>

然后在服务器端上传调用,只需检查Response.Cookies(“upload-type”)。 像魅力一样工作!