曾在开发ATLAS时候,想用UpdatePanel (UP)来上传文件,但是没有想到FileUpload (FU)控件不能在UP里使用,这里有个小技巧,可以让你的FU控件在UP里面起做用. 来看代码:
HTML:
<
div
>
<
atlas:ScriptManager
ID
="ScriptManager1"
runat
="server"
EnablePartialRendering
="true"
>
</
atlas:ScriptManager
>
<
atlas:UpdatePanel
ID
="UpdatePanel1"
runat
="server"
>
<
ContentTemplate
>
<
asp:FileUpload
ID
="FileUpload1"
runat
="server"
/><
asp:Button
ID
="cmdButton1"
runat
="server"
Text
="Upload"
/><
asp:Label
ID
="Label1"
runat
="server"
Text
=""
></
asp:Label
>
</
ContentTemplate
>
</
atlas:UpdatePanel
>
<
asp:Button
ID
="cmdButton2"
OnClick
="cmdButton2_click"
runat
="server"
Text
="Full post back"
/>
</
div
>
CODE BEHIND:
Protected
Sub Page_Load()
Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.cmdButton1.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(Me.cmdButton2, ""))
End Sub


Protected
Sub cmdButton2_Click()
Sub cmdButton2_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If Me.FileUpload1.HasFile Then
System.Threading.Thread.Sleep(1000)
Me.Label1.Text = Me.FileUpload1.FileName
End If
End Sub
这样的话,当你在点击UP里面的UPLOAD按钮时,整个页面就会回传,当然你的可以找到你FU控件里面的文件,所以上传文件是没问题. OK~
P.S. 虽然解决这个问题,但是那个多余的BUTTON控件和整个页面的回传都是瑕疵. 当然希望ATALS团队在开发的时候,能够考虑到这一点,给我们开发者带来更多的惊喜!
P.S. Atlas关于UpdatePanel的使用说明-- 原文链接
本文介绍了一个小技巧,使FileUpload控件能在ASP.NET AJAX的UpdatePanel中正常工作,通过将Upload按钮的点击事件绑定到一个完整的页面回传按钮,实现了局部刷新时的文件上传功能。

242

被折叠的 条评论
为什么被折叠?



