WEB开发有些时候我们会遇到弹出文件对话框,选择一个本地文件的需求。
在ASP.NET 2.0下,我们可以直接采用FileUpload控件来做到这一点。
这是一个组合控件,由一个文本框和一个按钮组成,实质就是html下的input(file)控件。
使用方法:
前台
<asp:FileUpload ID="FileUpload1" runat="server" />
后台
//获取选择文件完整路径
string fileName = this.FileUpload1.PostedFile.FileName;
使用起来没有问题,但是我们会遇到这样一个问题:控件样式不好设置,浏览按钮的文本也不能改变。
那么如何可以做到变脸呢?我们只能变通一下,一点小技巧:
1 放一个input(file)控件,设置风格为隐藏,属性改变事件中指定选中值赋值到输出的文本框控件上
2 放一个input(text)控件,设置为只读
3 放一个button控件,设置点击事件为input(file)控件的点击事件
<input type="file" id="btnFile" onpropertychange="txtFoo.value=this.value;" style="visibility:hidden"><br>
<input type="text" id="txtFoo" readonly style="width: 353px;background-color:#D6FFD6">
<input type="button" onclick="btnFile.click()" value="选择文件" style="background-color:#E3ECE7;border:1 solid black;">
<input type="text" id="txtFoo" readonly style="width: 353px;background-color:#D6FFD6">
<input type="button" onclick="btnFile.click()" value="选择文件" style="background-color:#E3ECE7;border:1 solid black;">
这样一次改变,便能修改文本框和按钮的样式和文本,实现变脸。
效果图: