2016-01-21 7 views
0

Я пытаюсь загрузить файлы с помощью AjaxFileUpload, я сделал это. Но теперь мне также нужно знать 2 параметра, 1 указывается на URL-адресе myPage.aspx? Parameter = 2Получить значение из сеанса или ViewState в событиях AjaxFileUpload из AjaxToolkit

второй находится в ViewState.

Но события OnUploadStart или OnUploadComplete

я не имею доступа к этим значениям случае, когда я попробовал сеанс.

Как я могу решить эту проблему ??

Вот мой ASPX:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AutoUpload.aspx.cs" Inherits="AutoUpload" %> 
<%@ Register TagPrefix="ajaxToolkit" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit, Version=15.1.4.0, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e" %> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
     <title></title> 
    <script type="text/javascript" src="scripts/jquery-1.3.2.min.js"> </script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 

    <asp:TextBox runat="server" ID="txtValue"></asp:TextBox> 
    <asp:Button runat="server" ID="btnSetValue" Text="set" OnClick="btnSetValue_OnClick"/> 
    <asp:HiddenField runat="server" ID="hiddenValue"/> 

    <ajaxToolkit:AjaxFileUpload ID="AjaxFileUpload" MaximumNumberOfFiles="50" AllowedFileTypes="jpg,jpeg" OnUploadComplete="AjaxFileUpload_OnUploadComplete" OnUploadStart="AjaxFileUpload_OnUploadStart" runat="server" /> 
</div> 
</form> 

А вот мой стороне сервера

 using System; 
    using AjaxControlToolkit; 

    public static class Validators 
    { 
      public static bool IsNumeric(this string value) 
      { 
       int myInt; 
       bool isNumerical = int.TryParse(value, out myInt); 
       return isNumerical; 
      } 
     } 

public partial class AutoUpload : System.Web.UI.Page 
{ 
    public int Recid 
    { 
     get 
     { 
      if ((ViewState["Recid"] != null) && ((ViewState["Recid"].ToString()).IsNumeric())) 
       return Convert.ToInt32(ViewState["Recid"]); 
      return 0; 
     } 
     set { ViewState["Recid"] = value; } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     string id = Request.QueryString["id"]; 
     if (!string.IsNullOrEmpty(id) && id.IsNumeric()) 
      Recid = Convert.ToInt32(id); 
    } 

    protected void btnSetValue_OnClick(object sender, EventArgs e) 
    { 
     hiddenValue.Value = txtValue.Text.ToString(); 
    } 


    protected void AjaxFileUpload_OnUploadStart(object sender, AjaxFileUploadStartEventArgs e) 
    { 
     int myId = Recid; // THIS IS ALWAYS 0 
     string otherValue = hiddenValue.Value; 
    } 

    protected void AjaxFileUpload_OnUploadComplete(object sender, AjaxFileUploadEventArgs e) 
    { 
     int myId = Recid; // THIS IS ALWAYS 0 
     string otherValue = hiddenValue.Value; 

     AjaxFileUpload.SaveAs(Server.MapPath("~/" + e.FileName)); 
    } 


} 

Если вы попытаетесь запустить ASPX с номинальной ameter например? id = 12, он должен быть сохранен в Recid, также значение из поля ввода должно храниться в hiddenValue.

Но когда я загружаю файлы (событие OnUploadStart или OnUploadComplete), я не имею доступа к этим значениям, я также пробовал сеанс, но он также не работал.

ответ

1

AjaxFileUpload не сохраняет параметры строки запроса в последней выпущенной версии 15.1.4 до этого момента.

Однако вы можете загрузить и скомпилировать source code, где эта проблема уже исправлена, и AjaxFileUpload сохраняет параметры строки запроса.

 Смежные вопросы

  • Нет связанных вопросов^_^