我在即将接近生产的某些代码上遇到了麻烦。我在表格上上传了一个文件,该表格允许用户将文档附加到他们在系统中的订单上发布的注释。
此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>
任何人都可以在不使用更新面板的情况下解释或帮助了解为什么会发生这种情况(我只能从中找到答案)。另外,我的文件不是空的,它们是我一直在使用的相同测试文件,并确认它们具有数据。
答案 0 :(得分:0)
好的,所以我找到了我的问题,但提出的问题多于答案。
我在页面上添加了一个不可见的第二种形式,并带有一个这样的占位符。
<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
总是显示为假吗?