我有一个非常简单的应用程序。我试图使用ASP.NET的文件上传控件上传文件。下面是我的整个.cs代码和.aspx代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace TestFileUpload1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void uploadFile_Click(object sender, EventArgs e)
{
if (UploadImages.HasFiles)
{
foreach (HttpPostedFile uploadedFile in UploadImages.PostedFiles)
{
uploadedFile.SaveAs(System.IO.Path.Combine(Server.MapPath("~/Images/"), uploadedFile.FileName));
//listofuploadedfiles.Text += String.Format("{0}<br />", uploadedFile.FileName);
}
}
}
}
}
我的.aspx代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestFileUpload1.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test web site</title>
<script src="Scripts/jquery-1.11.0.js"></script>
<script src="Scripts/jquery.mobile-1.4.5.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<asp:FileUpload runat="server" ID="UploadImages" AllowMultiple="true" />
<asp:Button runat="server" ID="uploadedFile" Text="Upload" OnClick="uploadFile_Click" />
<asp:Label ID="listofuploadedfiles" runat="server" />
</div>
</div>
</form>
</body>
</html>
每当我尝试上传一个文件时,UploadImages.HasFiles的值为“False”。2以上是完整的工作示例。3只要我删除其中一个脚本标记:
<script src="Scripts/jquery-1.11.0.js"></script>
<script src="Scripts/jquery.mobile-1.4.5.js"></script>
我的代码开始工作,当我试图上传一个文件时,UploadImages.HasFiles得到“真”。
我使用的是.net框架4.7.2
由于GUI的原因,我需要在代码中保留这两个脚本标记,这是一个旧的应用程序,在所有页面中都使用了这些标记。
我也尝试过在一个更新面板中 Package 控件,但也不起作用。下面是更改后的.aspx页面。虽然,我希望我的原始代码工作。我不想使用 AJAX ,但我只是尝试使用它,因为它被建议作为解决方案之一
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestFileUpload1.WebForm1" %>
<%--<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp"%>--%>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test web site</title>
<script src="Scripts/jquery-1.11.0.js"></script>
<script src="Scripts/jquery.mobile-1.4.5.js"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:FileUpload runat="server" ID="UploadImages" AllowMultiple="true" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="uploadedFile" />
</Triggers>
</asp:UpdatePanel>
<asp:Button runat="server" ID="uploadedFile" Text="Upload" OnClick="uploadFile_Click" />
<asp:Label ID="listofuploadedfiles" runat="server" />
</div>
</div>
</form>
</body>
</html>
下面是我在代码后面得到的false值的图像:
任何帮助都将不胜感激。
3条答案
按热度按时间wgmfuz8q1#
我所要做的就是把data-ajax =“false”放在form标记中,这样就解决了这个问题。
webghufk2#
使用更新面板并将控件 Package 在其中。然后将按钮controlID作为触发器(确保它是PostBackTrigger)添加到更新面板。要进行测试,请确保在uploadFile_Click事件上放置一个断点,以便您可以单步执行并查看值。
lf5gs5x23#
试试下面的方法:删除允许多个并添加更新模式条件(见确认这些更改的大小写/语法,因为我只是在记事本中写)。