求救:自定义控件取不到viewstate键值?

ldljlq 2005-01-18 09:01:18
我这几天写了个文件上传控件,运行基本正常,只是在页面中取不到文件上传后的新文件名(改名保存的)。请高手指点。

这是控件中的属性,用以公开上传后的新文件名:
public string fileurl
{
get
{
if(viewstate["fileurl"]!=null)
{
return viewstate["fileurl"].tostring();
}
else
{
return null;
}
}
set
{
viewstate["fileurl"]=value;
}
}

然后在页面中怎么也取不到它的值,今天下午弄了一下午,总算有点进步,在第二次上传的时候能取到前一次上传文件的文件名了。但是这个问题真的很怪,为什么要触发一次服务器端事件之后才能取到它的值,想不明白了。

...全文
153 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldljlq 2005-01-18
  • 打赏
  • 举报
回复
其实也就只创建了三个子控件:htmlinputfile,lable,button各一个。
改名保存的原因是防止中文文件名造成用户不能访问,得改成一个规范的只有数字组成的文件名,确保每个用户不用改浏览器设置都能访问到。
做成自定义的原因主要是统一上传目录,限制文件类型,规范文件名,方便管理上传的文件。
从目前来看,用session保存似乎是个不错的办法。
本问题就此结帖。
saucer 2005-01-18
  • 打赏
  • 举报
回复
>>>只是在页面中取不到文件上传后的新文件名

how did you create your child controls? if you always want the new filename, try

protected System.Web.UI.HtmlControls.HtmlInputFile hif; //create it somewhere

public string fileurl
{
get
{
EnsureChildControls();
return hif.PostedFile.FileName;
}
}
ldljlq 2005-01-18
  • 打赏
  • 举报
回复
用session保存应该可以达到目的,不过我不喜欢用session保存参数,请教各位,有没有更好的办法?
xinbuzailiulei 2005-01-18
  • 打赏
  • 举报
回复
up
ldljlq 2005-01-18
  • 打赏
  • 举报
回复
“应该是代码执行顺序的问题,你可能在取值时还没有付值。”

对呀,想想应该是没有赋值的问题。

点击控件中的按钮后,
向服务器提交表单,
服务器取viewstate,
服务器改名保存文件,
然后向viewstate中添加文件名,
再发送到客户端。

问题原因我想找到了,可是怎么解决这个问题呢?
不用viewstate又有什么方法来保存并公开这个新的文件名呢?

tengjian1981 2005-01-18
  • 打赏
  • 举报
回复
up
gaoqixiang 2005-01-18
  • 打赏
  • 举报
回复
应该是代码执行顺序的问题,你可能在取值时还没有付值。
xiaoniaofei 2005-01-18
  • 打赏
  • 举报
回复
控件的Page_Load,在置放控件的页面的Page_Load,后面运行!!

可以调试,检查运行的先后!
bugsbuddy 2005-01-18
  • 打赏
  • 举报
回复
请从WebControl继承或实现IAttributeAccessor接口

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧