updatepanel中的asyncfileupload.hasfile为false

时间:2012-12-15 11:59:56

标签: c# asp.net updatepanel asyncfileupload

我正在使用AJAX控件工具包中的asyncFileUpload控件。我可以在后面的代码中对它进行类型转换并访问它,但它似乎没有抓取文件。这是它嵌套在页面中的方式:

<asp:LoginView ID="LoginView1" runat="server">
    <AnonymousTemplate>
    </AnonymousTemplate>
    <LoggedInTemplate>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Repeater ID="rpt_items_loggedin" runat="server">
                   <ItemTemplate>
                   </ItemTemplate>
                </asp:Repeater>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btn_addwish" EventName="click" />
            </Triggers>
        </asp:UpdatePanel>
        <div class="wenslijst_preview">        
            <div class="fourfifth">
                <table>
                    <tr>
                       <td>
                          <asp:Label ID="lbl_img" runat="server" Text="Upload een afbeelding:" AssociatedControlID="fu_img_upload"></asp:Label>
                       </td>
                       <td>
                          <asp:AsyncFileUpload ID="asfu_img" runat="server" UploaderStyle="Traditional" />
                       </td>
                    </tr>
                </table>
            </div>
            <div class="fifth">
                <asp:ImageButton ID="btn_addwish" runat="server" CssClass="icon_img" 
                                        ImageUrl="images/add.png" onclick="btn_addwish_Click"/>
            </div>
        </div>  
     </LoggedInTemplate>
</asp:LoginView> 

这就是我在代码背后的处理方式。当我调试时,我看到AsyncFileUpload控件没有得到任何数据:

protected void btn_addwish_Click(object sender, ImageClickEventArgs e)
{
        AjaxControlToolkit.AsyncFileUpload f = new      AjaxControlToolkit.AsyncFileUpload();
        f = (AjaxControlToolkit.AsyncFileUpload)(this.LoginView1.FindControl("asfu_img"));
        Label l = new Label();
        l = (Label)(this.LoginView1.FindControl("lbl_img_feedback"));
        string filePath = "";
        if (f.HasFile)
        {
            try
            {
                string fileName = DateTime.UtcNow.Ticks + "_" + cId;
                filePath = "images/userimg/" + fileName;
                f.SaveAs(Server.MapPath(filePath));
                l.Text = filePath;
            }
            catch (Exception ex)
            {
                l.Text = "Deze foto kon niet worden geuploaded. " + ex.Message;
            }
        }
    }

告诉我您是否需要查看更多代码或信息!

2 个答案:

答案 0 :(得分:1)

在我看来,btn_addwish是你想要用来上传文件的按钮,如果是这种情况那么你的问题是当执行f.Hasfile时上传还没有完成,因此,它没有文件。尝试使用UploadedComplete事件或以某种方式使用另一个控件来检查hasfile。

答案 1 :(得分:1)

确保没有异步加载带有asyncfileupload控件的usercontrol,例如通过Response.Redirect(“pageWithUploadControl”)。

您是否处理过FileUploadComplete事件并检查AsyncFileUploadState是否成功?

还尝试更改表单的enctype:

<form id="form1" enctype="multipart/form-data" runat="server">