FileUpload无法赋值解决方案

由于考虑到安全原因,不允许给FileUpload赋值,但是我们平时经常遇到页面刷新后,FileUpload之前选择的为空了,用户需要重新选择文件,很麻烦,这里提供一种比较简单的解决办法。

思路:做一个伪FileUpload控件,页面上放一个FileUpload,设置不可见,用另外的button触发FileUpload的“浏览...”事件,在FileUpload的change事件中把选择的文件路径赋值给TextBox,这里的TextBox和button组合就变成了这个伪FileUpload,这里的TextBox可以随便赋值,页面刷新也不会清空

UCFilejpload.ascx代码:

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="UCFilejpload.ascx.vb" Inherits="WebApplicationVB.UCFilejpload" %>
<script src="jquery-1.9.1.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#selectFile').bind('click', function () {
                var ie = !-[1, ];
                if (ie) {
                    $('#fileupload').trigger('click').trigger('change');
                } else {
                    $('#fileupload').trigger('click');
                }
            });

            $('#fileupload').change(function () {
                $("#<%=txtFileUrl.ClientID%>").val($(this).val());
            });
        });
        function selectDo() {
            $("#fileupload").trigger('click');
        }
    </script>
<asp:TextBox ID="txtFileUrl" runat="server" Width="200px"></asp:TextBox>
<input type="file" name="fileupload" id="fileupload" style=" 0px; FILTER: alpha(opacity=0); moz-opacity: 0; opacity: 0; display: none;" />
<input type="button" onclick="selectDo()" value="浏览..." />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtFileUrl" runat="server" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>

UCFilejpload.ascx.vb代码:

Public Class UCFilejpload
    Inherits System.Web.UI.UserControl
    Public Property StrUrl As String
        Get
            Return txtFileUrl.Text
        End Get
        Set(value As String)
            txtFileUrl.Text = value
        End Set
    End Property
End Class

效果如下:

原文地址:https://www.cnblogs.com/shenyixin/p/3431883.html