如何从回调中获得回报

时间:2013-09-20 18:31:55

标签: c# asp.net events file-upload

我正在使用回调来执行字符串函数,但我无法在标签上显示返回值。

外观:

    protected void ASPxUploadControl1_FileUploadComplete(object sender,
           FileUploadCompleteEventArgs e)
    {
        try
        {
            e.CallbackData = SaveNewFile(e.UploadedFile);
            lblret.Text = ????
        }
        catch (Exception ex)
        {
            String error = ex.ToString();
            lbleret.Text = error;
        }
    }



    string SaveNewFile(UploadedFile upfile)
    {
        if (!upfile.IsValid)
            return string.Empty;

        String RMSG = "Houve um erro ao enviar o arquivo!";
        Guid nid = Guid.NewGuid();
        String extOK = "0";
        const String updir = "~/tempIMGS/";
        String[] extensao = { ".gif", ".png", ".jpeg", ".jpg", ".bmp" };//extensões
        FileInfo finfo = new FileInfo(upfile.FileName);

        long fmaxsize = 2097152;//tamanho do arquivo

        String filext = System.IO.Path.GetExtension(upfile.FileName);

        for (int i = 0; i < extensao.Length; i++)
        {
            if (filext == extensao[i])//se a extensão for permitida
            {
                if (upfile.ContentLength <= fmaxsize)//se o arquivo tiver no máximo 2mbs
                {
                    extOK = "1";
                }
                else
                {
                    RMSG = "O arquivo selecionado ultrapassa o tamanho máximo por arquivo (2Mbs) \n " + upfile.FileName.ToString();
                }
            }
            else
            {
                RMSG = "O arquivo não se encaixa no quadro de extensões permitiras! (.gif , .png , .jpeg , .jpg , .bmp";
            }
        }

        if (extOK == "1")
        {
            string resFileName = MapPath(updir) + nid + filext;
            upfile.SaveAs(resFileName);
            //Response.Write("<script>alert('arquivo enviado com sucesso');</script>");
            RMSG = "Arquivo enviado com sucesso!";
        }
        return RMSG;
    }

我正在尝试执行一个函数,并在执行过程中定义带有消息的VAR RMSG,当函数结束时返回最后一条错误消息。

参见'TRY',e.CallbackData = EXECUTE_FUNCTION;一旦返回将存储在e.CallbackData中,

如何从e.callbackdata获得此回复?

1 个答案:

答案 0 :(得分:1)

您可以先将结果存储在变量中,然后将其分配给CallbackData和/或对其进行一些转换,并将其分配给您的标签,如下所示:

        string result = SaveNewFile(e.UploadedFile);
        e.CallbackData = result;
        lblret.Text = String.Format(
                           "processed at {0} with a result of: {1}", 
                            DateTime.Now,  
                            result);