由於考慮到安全原因,不允許給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="width: 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
效果如下: