1

我的 MultiView 的第二个视图中有一个 AjaxFileUpload 控件。默认情况下,MultiView 的第一个视图出现,通过单击一个按钮,我到达具有 AjaxFileUpload 控件的第二个视图。此控件不上传任何文件,上传一直停留在 93% 或 99% 或 100%。

但是当我将第二个视图设置为默认视图时,AjaxFileUpload 控件可以正常工作。

WebForm 中的代码(aspx 页面):

  <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
        <asp:View ID="View1" runat="server">
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
        </asp:View>
        <asp:View ID="View2" runat="server">
            <asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server" onunload="AjaxFileUpload1_Unload"
                onuploadcomplete="UploadComplete" ThrobberID="myThrobber" onload="AjaxFileUpload1_Load"
                oninit="AjaxFileUpload1_Init" />
            <asp:AnimationExtender ID="AjaxFileUpload1_AnimationExtender" runat="server" Enabled="True"
                TargetControlID="AjaxFileUpload1">
            </asp:AnimationExtender>
            <asp:Button ID="Button1" runat="server" Text="Button" />
        </asp:View>
    </asp:MultiView>

cs页面中的代码(aspx.cs):

protected void Page_Load(object sender, EventArgs e)
{

}

protected void UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
string path = Path.GetTempPath();

AjaxFileUpload1.SaveAs(Server.MapPath("files/")+ e.FileName);
}

protected void AjaxFileUpload1_Unload(object sender, EventArgs e)
{

}

protected void Button1_Click(object sender, EventArgs e)
{
MultiView1.ActiveViewIndex = 1;
}

我做错了什么,我该如何解决这个问题?

4

2 回答 2

2

谢谢你的问题。

这是一个已知问题,如果 AjaxFileUpload 控件放置在最初不可见的 Panel 控件上,它就不起作用。

可以在客户端选择文件,但是如果用户单击“上传”按钮,则上传将不会完成,并且仍处于失败状态。

如果我们想解决它,我们应该在同一页面上的一个不可见的 HTML div 标签内放置另一个 AjaxFileUpload 控件

将相同的客户端和服务器端上传完整事件处理程序附加到 AjaxFileUpload 控件。

请检查以下链接,有人提供了解决方案。

http://ajaxcontroltoolkit.codeplex.com/workitem/27307

希望这可以帮助。谢谢。

最好的祝福!

于 2013-11-12T04:29:51.027 回答
0

您可以MultiView使用multiple panel. 并创建一个模拟的方法

multiview.setactiveview();
Panel1.visible=true; 
Panel2.Visible=false;
于 2015-08-21T16:50:02.460 回答