[英]How to get selected dropdownvalue in AjaxFileUpload onuploadComplete event?
[英]asp.net : AjaxFileUpload OnUploadComplete event
我正在使用Visual Studio 2013和AjaxControlToolkit v15.0開發簡單的拖放多個文件上傳器。 我有AjaxFileUpload控件,但是我注意到在瀏覽器中只有一個文件顯示為已上傳
另外,我看到OnUploadComplete事件不會觸發。 我通過在事件中插入警報來測試事件,該事件不會運行,並且上傳的文件也不會顯示在項目或數據庫表中。
這是我的代碼:
.aspx文件
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div align="center">
<asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server" MaximumNumberOfFiles="10" OnUploadComplete="File_Upload" Width="500px" Mode="Auto" />
</div>
</form>
.aspx.cs文件
protected void File_Upload(object sender, AjaxFileUploadEventArgs e)
{
SqlConnection con = new SqlConnection(abc);
try {
string filename = Path.GetFileName(e.FileName);
string strDestPath = Server.MapPath("~/Documents/");
SqlCommand cmd = new SqlCommand("INSERT INTO upload (name, path) VALUES(@FileName, @FilePath)");
cmd.Parameters.AddWithValue("@FileName", filename);
cmd.Parameters.AddWithValue("@FilePath", "Documents/" + filename);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
//Save file to project
AjaxFileUpload1.SaveAs(@strDestPath + filename);
}
catch (Exception er)
{
Response.Write("<script language='javascript'> alert(' problem');</script>");
}
finally { con.Close(); }
}
web.config中
<system.web>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
<httpHandlers>
<add verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
</httpHandlers>
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
</handlers>
</system.webServer>
有什么辦法嗎?
我的變通方法:我在所有AjaxFileUpload控件上創建了一個名為“ data-upload-type”的數據屬性,並將其設置為類型的名稱(用於了解如何處理文件的上載類型)。 然后,我設置客戶端調用以獲取該值,並設置具有相同值的cookie。 Cookie是在服務器端函數上接收的,我根據接收到的值進行分支。
這是一個示例:這是我常見的客戶端開始上傳: function StartUpload(sender, args) { var t = $(sender._element).attr('data-upload-type'); document.cookie = 'upload-type=' + $(sender._element).attr('data-upload-type') + ';'; }
function StartUpload(sender, args) { var t = $(sender._element).attr('data-upload-type'); document.cookie = 'upload-type=' + $(sender._element).attr('data-upload-type') + ';'; }
function StartUpload(sender, args) { var t = $(sender._element).attr('data-upload-type'); document.cookie = 'upload-type=' + $(sender._element).attr('data-upload-type') + ';'; }
我的頁面代碼刪除了一個ajaxcontrols: <asp:AjaxFileUpload ID="afuUploader1" runat="server" OnClientUploadStart="StartUpload" OnUploadComplete="UploadComplete" OnClientUploadComplete="UploadComplete" data-upload-type="UploadType2" / >
然后,在您的服務器端上傳調用中,只需檢查Response.Cookies(“ upload-type”)。 奇跡般有效!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.