更新面板和回发触发器 asp 内的输入文件
本文关键字:asp 输入 文件 触发器 更新 | 更新日期: 2023-09-27 18:31:21
我在UpdatePanel中使用了一个输入文件,它运行良好。 但是使用UpdatePanel PostBackTrigger,ScriptManager.RegisterStartupScript不起作用。
如果我不使用PostBackTrigger,ScriptManager.RegisterStartupScript可以工作,但输入文件不能。
我正在使用带有 C# 的 ASP Web 窗体
这是源代码。
。.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadFile.aspx.cs" Inherits="WebApplication1.UploadFile" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="up_upload" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:PostBackTrigger ControlID="btn_upload" />
</Triggers>
<ContentTemplate>
<input type="file" id="file_test" runat="server" />
<asp:Button ID="btn_upload" runat="server" Text="Subir" CausesValidation="False" OnClick="btn_upload_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
。.cs
protected void btn_upload_Click(object sender, EventArgs e)
{
try
{
string message = "file not uploaded!";
if (file_test.PostedFile != null)
{
string fn = file_test.PostedFile.FileName;
string only_path = Server.MapPath(".");
file_test.PostedFile.SaveAs(only_path + "//Images//" + fn);
ScriptManager.RegisterStartupScript(up_upload, up_upload.GetType(), Guid.NewGuid().ToString(), "alert('server path: ' + '" + only_path.Replace("''", "''''") + "');", true);
message = "file uploaded!";
}
ScriptManager.RegisterStartupScript(up_upload, up_upload.GetType(), Guid.NewGuid().ToString(), "alert('" + message + "');", true);
up_upload.Update();
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(up_upload, up_upload.GetType(), Guid.NewGuid().ToString(), "alert('" + ex.Message + "');", true);
}
}
解决了!当我进行整页回发时,我使用了 ClientScript.RegisterStartupScript 而不是 ScriptManager.RegisterstartupScript。
ClientScript.RegisterStartupScript(up_upload.GetType(),
Guid.NewGuid().ToString(), "<script>alert('" + message + "');</script>");
感谢您的帮助!
asp.net> 使用文件上载程序控件的文件上载始终需要整页回发请求。
这是所有 AJAX 框架中用于异步调用应用程序的 XmlHttpRequest 组件的限制。我建议你两个解决方案:
- 给出整页回发(**即不要在更新面板中使用文件上传)
- 如果您不想要完整的回发,请尝试其他解决方案,例如用于上传文件的 Dropzone 文件上传器插件。当我想要一个很酷的文件上传界面时,我总是使用它。这是 非常容易使用 .请参阅其文档以供使用,或尝试此链接进行了解。
相信我,这很容易。