首页 > 解决方案 > FileUpload.HasFile 总是假的,没有更新面板,一直工作到今天

问题描述

我在一些接近生产的代码上遇到了拉扯问题。我在表单上上传了一个文件,该表单允许用户将文档附加到他们在系统内的订单上发布的评论中。

此 FileUpload 控件不在更新面板中,而且从来没有。它一直工作到今天。我正在测试该项目并意识到文件没有上传,并发现.hasfile刚刚开始为所有内容返回 false,似乎在一夜之间,因为我有数据库记录,并且上传了几天前的文件。

这是上传文件的表单按钮单击部分,如果在文件上传中

if (fileUp.HasFile)
{
            String mime = MimeMapping.GetMimeMapping(fileUp.FileName);
            String name = fileUp.FileName;
            byte[] bytes = fileUp.FileBytes;
            sql = "INSERT INTO orderAttachments (orderID, noteID, mimeType, theUpload, isDeleted, addedDateTime, addedIP, submittedBy, isBuyingOffice, commentID) VALUES (@id, @name, @mime, @doc, @del, GETDATE(), @ip, @assName, @buy, @commID)";
            cmd.CommandText = sql;               
            cmd.Parameters.AddWithValue("@id", id);
            cmd.Parameters.AddWithValue("@name", name);
            cmd.Parameters.AddWithValue("@mime", mime);
            cmd.Parameters.AddWithValue("@doc", bytes);
            cmd.Parameters.AddWithValue("@del", 0);
            cmd.Parameters.AddWithValue("@ip", Request.ServerVariables["REMOTE_ADDR"]);
            cmd.Parameters.AddWithValue("@assName", ad.FirstName() + " " + ad.LastName());
            cmd.Parameters.AddWithValue("@buy", b);
            cmd.Parameters.AddWithValue("@commID", commid);
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();

}

这是评论表格

<ul id="commentbox" class="flex-box" visible="true" runat="server">
                        <li>
                            <label>Add Comment To Order</label></li>
                        <li>
                            <asp:TextBox ID="commentTb" TextMode="MultiLine" runat="server"></asp:TextBox></li>
                        <li>
                            <label>Attach File: </label>
                            <asp:FileUpload ID="fileUp" runat="server" /></li>
                        <li>
                            <asp:CheckBox ID="boCb" runat="server" Text="Restrict To Buying Office" /></li>
                        <li>
                            <asp:Button ID="commentBtn" runat="server" Text="Submit" OnClick="commentBtn_Click" /></li>
                        <asp:RequiredFieldValidator ID="RcommentVl" runat="server" ControlToValidate="commentTb" ErrorMessage="Comment Required"></asp:RequiredFieldValidator>
                    </ul>

任何人都可以解释或帮助了解为什么在不使用更新面板的情况下会发生这种情况(我只能找到答案)。另外,我的文件不是空的,它们是我一直在使用的相同测试文件,并且已经确认它们有数据。

标签: c#asp.net

解决方案


好的,所以我发现了我的问题,但它提出的问题多于答案。

我在页面中添加了一个不可见的第二个表单,带有这样的占位符。

<form ID="form2" runat="server" visible="false">
        <asp:PlaceHolder ID="PlaceHolder1" Visible="false" runat="server"> 


        </asp:PlaceHolder> 
</form>

它位于页面底部,仅在管理员使用的非常罕见的情况下可见(出现时主窗体的可见性将设置为 false)。当它可见时,根据某些标准将按钮添加到占位符中。

无论如何,我删除了它并将它移动到它自己的 aspx 页面,并在它应该FileUpload.HasFile显示的时候再次开始显示。true

有谁知道为什么这可能导致FileUpload.HasFile总是显示错误?


推荐阅读