【问题标题】:Maintain value in Fileupload control in asp.net,C#在 asp.net,C# 中保持 Fileupload 控件中的值
【发布时间】:2010-01-09 04:05:01
【问题描述】:

我在更新面板中使用 Fileupload 和 3 个下拉控件,3 个下拉列表将在下拉选择的索引更改事件上回发(即,如国家、州和城市...根据国家、州和城市从 db 获取值)

问题是

回发时,文件名路径从文件上传控件中消失(如预期的/或默认属性)。

我正在将文件转换为字节数组,以便从文件上传控件存储在数据库中。

我怎样才能保留价值或有什么办法可以解决这个问题。

是否有任何用于文件上传的 ajax 控件或任何在回发后保留值的免费控件...?

或者可以在回发期间将值设置为文件上传控制?

提前致谢

【问题讨论】:

    标签: c# asp.net ajax


    【解决方案1】:

    您可以尝试使用 asp.net ajax 事件处理程序将文件上传值保留在异步回发之间的隐藏字段中。

    Sys.WebForms.PageRequestManager.instance.add_beginRequest(BeginRequestHandler)
    Sys.WebForms.PageRequestManager.instance.add_endRequest(EndRequestHandler)
    
    function BeginRequestHandler(sender, args) {
      var fileUpload = document.getElementById('fileUpload');
      var hiddenUpload = document.getElementById('hiddenUpload');
      hiddenUpload.value = fileUpload.value;
    }
    
    function EndRequestHandler(sender, args) {
      var fileUpload = document.getElementById('fileUpload');
      var hiddenUpload = document.getElementById('hiddenUpload');
      fileUpload.value = hiddenUpload.value;
    }
    

    【讨论】:

    • 嗨 Branislav Abadjimarinov 我在示例应用程序中尝试了您的示例代码...我收到此错误/.. 我做错了什么我不知道????
    • 函数 EndRequestHandler(sender, args) { var fileUpload = document.getElementById('fileUpload'); var hiddenUpload = document.getElementById('hiddenUpload'); fileUpload.value = hiddenUpload.value; }
    • 错误是 Microsoft JScript 运行时错误:'Sys' 未定义
    【解决方案2】:

    在回发时,您可以隐藏 FileUpload 控件并显示一个显示文件值的 Literal。

    然后,如果用户想要更改上传的文件,让他们单击一个按钮并再次显示 FileUpload 控件。

    这就是 gmail 的做法。

    【讨论】:

      【解决方案3】:

      您可以将下拉列表包装在它们自己的更新面板中(单独的面板或嵌套面板)。

      这将巧妙地回避问题,因为只有带有下拉列表的面板会在其事件触发时重新呈现。

      您可能必须控制哪些触发器会导致面板的哪些类型的回发,并且您可能必须将更新模式设置为有条件并手动管理每个面板何时更新。这取决于您如何安排页面以及所有这些。但大多数时候,使用多个面板时您不必做任何特别的事情。

      【讨论】:

        【解决方案4】:

        FileUpload 为文件名提供了一个属性。只是缓存它。

        UploadedFile.FileName 或类似的东西

        【讨论】:

        • ffs 谁给了我一个减号?请注意评论
        • 我没有给你 -1,但我遇到了与 OP 类似的问题。据我所知,您的解决方案非常误导且信息不足。出于安全原因,FileUpload 控件只有只读属性——这就是它的要点。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-30
        • 1970-01-01
        • 2010-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多