博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重写FileUpload控件让它可以显示上传后的文件名
阅读量:5104 次
发布时间:2019-06-13

本文共 3499 字,大约阅读时间需要 11 分钟。

我在以前的开发中经常遇到这样的场景:文件上传之后需要显示文件名,但是asp.net自带的fileupload是不能付给上传后的文件名值的。

以前都是做一个label显示的,今天想起来了,写个控件封装一下,直接上代码

控件的代码:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace Fang{    [DefaultProperty("Text")]    [ToolboxData("<{0}:FangFileUpload runat=server>
")] public class FangFileUpload : FileUpload { /// /// 指示是否上传成功,上传成功后直接反应文件名称和一个删除按钮 /// [ Browsable(false), Description("设置或获取是否上传成功的标记") ] public bool IsUploaded { get { return ViewState["IsUploaded"] == null ? false : (bool)ViewState["IsUploaded"]; } set { ViewState["IsUploaded"] = value; } } /// /// 上传成功的文件名啊 /// public string UploadedFileName { get { return ViewState["UploadedFileName"] == null ? null : ViewState["UploadedFileName"].ToString(); } set { ViewState["UploadedFileName"] = value; } } /// /// 微软默认在这里加了file属性,去掉 /// /// protected override void AddAttributesToRender(HtmlTextWriter writer) { //没有上传的时候客户端才需要id和name if (!this.IsUploaded) { string uniqueID = this.UniqueID; if (uniqueID != null) { writer.AddAttribute(HtmlTextWriterAttribute.Name, uniqueID); } string clientID = this.ClientID; if (clientID != null) { writer.AddAttribute(HtmlTextWriterAttribute.Id, clientID); } } } /// /// 判断是应该显示div,还是file /// protected override HtmlTextWriterTag TagKey { get { if (IsUploaded) { return HtmlTextWriterTag.P; } else { return HtmlTextWriterTag.Input; } } } /// /// 输出div或者file /// /// protected override void Render(HtmlTextWriter writer) { if (!IsUploaded) { writer.AddAttribute(HtmlTextWriterAttribute.Type, "file"); base.Render(writer); } else { base.RenderBeginTag(writer); writer.Write(string.IsNullOrEmpty(UploadedFileName) ? "未命名上传文件" : UploadedFileName); base.RenderEndTag(writer); } } }}

  

测试代码:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register Assembly="FangFileUpload" Namespace="Fang" TagPrefix="Fang" %>

  

using System;using System.Collections.Generic;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class _Default : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {    }    protected void btn_Click(object sender, EventArgs e)    {        if (FangFileUpload1.HasFile)        {            FangFileUpload1.SaveAs(Server.MapPath("~/upload/") + FangFileUpload1.FileName);            //上传成功            FangFileUpload1.IsUploaded = true;            FangFileUpload1.UploadedFileName = FangFileUpload1.FileName;        }    }}

  

转载于:https://www.cnblogs.com/12taotie21/p/3227900.html

你可能感兴趣的文章
django环境处理
查看>>
记一次企业级爬虫系统升级改造(三):文本分析与数据建模规则化处理
查看>>
javascript window对象
查看>>
Android定制组件之Widget之昨天今天明天
查看>>
JSON
查看>>
JavaScript中的匿名函数及函数的闭包
查看>>
【JMeter】选项-函数助手对话框应用举例
查看>>
2012年实习总结
查看>>
安装Cocoapods(MAC 10.11.1 安装不成功修正完毕)
查看>>
Git初始化的相关问题
查看>>
2015-7-1 记而随,随而记
查看>>
生产者消费者问题
查看>>
如何在Access2007中使用日期类型查询数据
查看>>
Jzoj4757 树上摩托
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
基于docker的spark-hadoop分布式集群之一: 环境搭建
查看>>
oracle 几个时间函数探究
查看>>
第一个Java Web程序
查看>>
Atomic
查看>>
div 显示滚动条与div显示隐藏的CSS代码
查看>>