我正在尝试在我的网站上实现AjaxUploadControl功能,但它不会触发OnUploadComplete方法。相反,它只是说文件上传100%,但文件不在指定的文件夹中。我在OnUploadComplete方法中设置了断点,并且能够确定永远不会到达此方法。当“取消”按钮显示时,它几乎似乎跳入无限循环,但是一旦尝试上传文件,屏幕上的所有按钮都不会被点击。
.aspx页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxTest.aspx.cs" Inherits="AjaxTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</ajaxToolkit:ToolkitScriptManager>
<div>
<ajaxToolkit:AjaxFileUpload ID="ajaxUpload1" runat="server" OnUploadComplete="ajaxUpload1_OnUploadComplete" />
</div>
</form>
</body>
</html>
代码隐藏文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class AjaxTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ajaxUpload1_OnUploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
string filePath = "~/SiteImages/" + e.FileName;
ajaxUpload1.SaveAs(MapPath(filePath));
}
}
非常感谢帮助!
答案 0 :(得分:1)
该属性为OnClientUploadComplete
,而非OnUploadComplete
。
请参阅this。
活动
UploadedComplete - 在上传文件时在服务器上引发 成功。在这种情况下,AjaxFileUploadEventArgs的一个实例是 传递包含文件名,大小和内容类型的参数。
答案 1 :(得分:1)
如果你没有设置正确的enctype和方法,UploadedComplete永远不会触发。
尝试在表单标记中添加 enctype =“multipart / form-data”。
的 e.g。强>
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
代码背后:
protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
string filePath = "~/SiteImages/";
AjaxFileUpload1.SaveAs(MapPath(filePath + System.IO.Path.GetFileName(e.FileName)));
}
代码内联:
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server"
onuploadcomplete="AjaxFileUpload1_UploadComplete" />
</div>
</form>
希望它有所帮助。
答案 2 :(得分:1)
您遇到的实际问题是您需要在web.config中使用HTTP处理程序
<httpHandlers>
<add verb="*" path="AjaxFileUploadHandler.axd"
type="AjaxControlToolkit.AjaxFileUploadHandler,
AjaxControlToolkit"/>
</httpHandlers>
我遇到了同样的问题(上传时出现红色错误,.cs文件中的事件根本没有触发),现在通过将其添加到我的web.config来解决
答案 3 :(得分:0)
我发现了我遇到的问题。我试图在网站和网络应用程序中实现功能。我创建了一个测试Web应用程序平台,它运行完美。我是AJAX的初学者,并没有意识到这会导致问题,但是,有没有人知道一个解决方案,以使这个功能在网站上工作。我担心此时很容易移植到网络应用程序。
答案 4 :(得分:0)
请遵循以下规则(.NET 4.0)或(.NET 4.5 FRAMEWORKS) 确认以下步骤已在您的项目中使用
HTML PAGE(必须是这样)
<body>
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
<div>
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></ajaxToolkit:ToolkitScriptManager>
<ajaxToolkit:AjaxFileUpload ID="AjaxFileUpload1" runat="server" OnUploadComplete="AjaxFileUpload1_UploadComplete" ClientIDMode="Static" ContextKeys="dd" MaximumNumberOfFiles="4" />
</div>
</form>
重要的WEB.Config应该是(具有以下标记 for .net 4.5 )
<system.webServer>
<handlers>
<add name="aa" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" />
</handlers>
</system.webServer>
重要的WEB.Config应该是(小于4或4.5 的标签如下)
<httpHandlers>
<add verb="*" path="AjaxFileUploadHandler.axd"
type="AjaxControlToolkit.AjaxFileUploadHandler,
AjaxControlToolkit"/>
</httpHandlers>