我在UpdatePanel內使用輸入文件,它工作得很好。但使用UpdatePanel PostBackTrigger,ScriptManager.RegisterStartupScript不起作用。輸入文件裏面updatepanel和回發觸發器asp
如果我不使用PostBackTrigger,ScriptManager.RegisterStartupScript可以工作,但輸入文件不會。
我使用ASP Web窗體與C#
這裏的源代碼。
的.aspx:使用asp.net文件上傳控制
<%@ 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);
}
}
歡迎來到SO,請問一下問題:你有什麼試過,你期望什麼等等。請參閱[如何提問](http://stackoverflow.com/help/how-to-問) – Nehal
我需要發回給客戶端一個javasript函數來顯示文件上傳後的消息,但由於某種原因,RegisterStartupScript與UpdatePanel觸發器不兼容。 – user3787571