前些天在开发一个WebControl中,向控件中增加了一个FileUpload,竟然发现此时的FileUpload无法获取到FileName值这个问题比较奇怪,一直没见过这个问题,对于页面的ViewState也确实开启着,但是为什么竟然没有值呢?
通过查找互联网,说是页面Form缺少属性Enctype = "multipart/form-data"; 于是在页面的Page_Load事件里写入: this.Page.Form.Enctype = "multipart/form-data";
问题得到解决,但如果每次使用控件都手动添加该属性的话太麻烦,于是在控件的构造函数里写入:this.Page.Form.Enctype = "multipart/form-data"却提示未将对象引用设置到对象的实例,即此时Page对象还未建立.把该代码写在Render方法里却没有任何效果,分析一下,应该和页面加载顺序有关,于是按如下代码解决:
#region 构造函数
public MyPictureUpload()
: base(HtmlTextWriterTag.Dir)
{
base.Load += new EventHandler(Page_Init);
}
void Page_Init(object sender, EventArgs e)
{
this.Page.Form.Enctype = "multipart/form-data";
}
#endregion