首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有标题文本框的AJAXFileUpload

带有标题文本框的AJAXFileUpload
EN

Stack Overflow用户
提问于 2012-10-03 19:47:58
回答 4查看 3.5K关注 0票数 4

相当简单。我只是希望用户能够在上传之前添加一个标题到文件。(是的,我鼓励正确的文件名,但这不是重点。)

代码语言:javascript
代码运行次数:0
运行
复制
<asp:TextBox runat="server" ID="txtDocumentTitle" />
<ajaxToolkit:AjaxFileUpload runat="server" ID="ajxUploadNDA" OnUploadComplete="ajxUpload_Complete" Width="400px"   /><br />

    protected void ajxUpload_Complete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
    {
        MyFile f = new MyFile();
        f.DocumentType = e.ContentType;
        f.FileBytes = e.GetContents();
        f.FileName = e.FileName;
        f.DocumentCategory = "Package Files";
        f.FileUploaded = DateTime.Now;
        f.DocumentTitle = txtDocumentTitle.Text;
        f.Save();

        DataBind();
    }

但是,当设置断点时,txtDocumentTitle.Text总是为空。我似乎无法强制一个完整的回发或找到任何其他方法来获得当前的文本框的价值。我可以允许用户在文件上传后编辑这些属性,但出于一些原因,这不是我喜欢的设计。(它鼓励在缺省情况下保留值。)

我试过:

代码语言:javascript
代码运行次数:0
运行
复制
    protected void Page_Init(object sender, EventArgs e)
    {
        ScriptManager.GetCurrent(Page).RegisterPostBackControl(ajxUploadNDA);
        ScriptManager.GetCurrent(Page).SupportsPartialRendering = false;
        ScriptManager.GetCurrent(Page).EnablePartialRendering = false;

    }

我试过了

代码语言:javascript
代码运行次数:0
运行
复制
<ajaxToolkit:AjaxFileUpload runat="server" ID="ajxUploadNDA" OnUploadComplete="ajxUpload_Complete" Width="400px" onchange="if (confirm('Upload ' + this.value + '?')) this.form.submit();"  />

任何建议都是受欢迎的。

EN

回答 4

Stack Overflow用户

发布于 2012-10-10 00:15:37

我通过在“设置文档标题”中添加一个按钮来解决这个问题,该按钮将文本框的值添加到会话中。然后,ajxUpload_Complete函数使用这个会话变量在上传时将标题设置为该会话值。

有几个原因很草率,但这是我所能做的最好的。

在Page_Load上:

代码语言:javascript
代码运行次数:0
运行
复制
if (!Page.IsPostBack && !ajxUploadNDA.IsInFileUploadPostBack)
{
  Session.Remove("DefaultDocumentCategory");
  lblDocumentCategory.Text = "Data Package Files";
  Session.Remove("DefaultDocumentTitle");
  lblDocumentTitle.Text = "Data Package File";
}

protected void btnChangeDocumentAttributes_Click(object sender, EventArgs e)
{
    lblDocumentCategory.Text = cboDocumentCategory.SelectedValue;
    lblDocumentTitle.Text = txtDocumentTitle.Text;
    Session["DefaultDocumentCategory"] = lblDocumentCategory.Text;
    Session["DefaultDocumentTitle"] = lblDocumentTitle.Text;
}

我还添加了一个虚拟按钮到页面,以强制回发,刷新我的网格视图,显示所有上传的文件。

代码语言:javascript
代码运行次数:0
运行
复制
<asp:Button ID="btnForcePostBack" runat="server" Text="" Style="background-color: Transparent; color: inherit; border-style: none;" />

protected void ajxUpload_Complete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{

    MyFile f = new MyFile();
    f.DocumentType = e.ContentType;
    f.FileBytes = e.GetContents();
    f.FileName = e.FileName;
    f.FileUploaded = DateTime.Now;

    if (Session["DefaultDocumentCategory"] == null || Session["DefaultDocumentCategory"].ToString() == string.Empty) f.DocumentCategory = "Data Package Files";
    else f.DocumentCategory = Session["DefaultDocumentCategory"].ToString();
    if (Session["DefaultDocumentTitle"] == null || Session["DefaultDocumentTitle"].ToString() == string.Empty) f.DocumentTitle = "Data Package File";
    else f.DocumentTitle = Session["DefaultDocumentTitle"].ToString();
    f.Save();
    ajxUploadNDA.Page.ClientScript.RegisterStartupScript(this.GetType(), "RefreshParent", "<script type='text/javascript'>var btn = window.parent.document.getElementById('btnForcePostBack');if (btn) btn.click();</script>");
}
票数 1
EN

Stack Overflow用户

发布于 2014-04-04 17:16:58

其他的答案我都找不到了。最后,我将文本框放在ajax更新面板上。然后,我为textbox OnTextboxChanged创建了一个事件,该事件存储了会话中的值。然后,我可以从会话中获取UploadComplete中的值。

票数 1
EN

Stack Overflow用户

发布于 2012-10-03 20:33:49

在使用ajax上载时,您只能立即保存,第二步是单独调用,从保存的位置获取文件并对其进行操作。我在使用Uploadify和Uploadifive进行多个异步上传时遇到了同样的问题。上传多个文件时,我的第一步是保存到临时位置,然后进行第二次调用来检索、调整大小并将其保存到云(Azure Storage)。这是不可能设置一个断点,因为线程到处都是。这是一种奇怪的行为,特别是在上传单个文件时,但这是首先保存然后使用单独调用检索的最佳解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12715749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档