2016-06-14 4 views
0

У меня есть элемент управления AjaxFileUpload в usercontrol, который динамически загружается в Postback, проблема в том, что после загрузки файла IsPostBack является ложным, из-за которого пользовательский контроль не загружен, что вызывает событие OnUploadCompleteAll не запускается.Событие postback от AjaxFileUpload от usercontrol ASP.NET

Я узнал, что элемент управления AjaxFileUpload имеет свое собственное свойство postback AjaxFileUpload.IsInFileUploadPostBack, как мне получить доступ к этому свойству с моей главной страницы WebForm1.aspx?

Когда событие запускается из AjaxFileUpload, я хочу проверить IsInFileUploadPostBack на загрузку страницы WebForm1.aspx, а затем загрузить usercontrol.

вот код.

WebForm1.aspx

<form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
     <asp:Button ID="Button1" runat="server" Text="Load Control" OnClick="Button1_Click" /> 
     <asp:PlaceHolder ID="Placeholder1" runat="server" /> 

    </form> 

CodeBehind

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (IsPostBack) 
       loadcontrol(); 
     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 

     } 

     private void loadcontrol() 
     { 
      this.Placeholder1.Controls.Clear(); 
      var _controls = LoadControl("~/WebUserControl1.ascx"); 
      this.Placeholder1.Controls.Add(_controls); 
     } 

WebUserControl1.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="AjaxFileUpload_Test.WebUserControl1" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> 

<div id="div1"> 

     <ajaxToolkit:AjaxFileUpload ID="AjaxFileUpload1" UseAbsoluteHandlerPath="false" OnUploadCompleteAll="AjaxFileUpload1_UploadCompleteAll" OnUploadStart="AjaxFileUpload1_UploadStart" runat="server" /> 
</div> 
+0

Потенциального дубликат: http://stackoverflow.com/questions/14665667/ajaxfileupload-postback-false –

+0

Есть только так много способов сказать «это не может работать описанный « Эта часть невозможна « IsInFileUploadPostBack на загрузке страницы WebForm1.aspx, а затем загрузить пользовательский контроль ». Вы не можете проверить свойство того, что не было загружено. –

+0

Понял ... позволяет сказать, что я хочу проверить свойство в loadcontrol() после загрузки элемента управления, как это сделать? –

ответ

0

Получил это!

Поскольку я должен загрузить элементы управления только тогда, я смогу получить доступ к объекту AjaxFileUpload.IsInFileUploadPostBack, я решил воспользоваться неортодоксальным подходом.

Добавлен ниже коды Page_Init

//to load the controls if AsyncFileUpload causes a postback 
//the URL should contain the ID of the control in its context query string 
    if (Request.HttpMethod.Contains("POST") && Request.Url.AbsoluteUri.Contains("AjaxFileUpload1")) 
      loadcontrol(); 
0

Есть ли какие-либо конкретные причины вы загружаете UserControl от коде? Управление ajax не создает фактическую обратную передачу, поэтому это всегда ложно. Для чего вам кажется, вы должны использовать NON-ajax-файл.

+0

У меня есть много опций на главной странице, на основе этих параметров я загружаю соответствующие пользовательские элементы управления. У элемента управления AjaxFileUpload есть свойство, которое оно задает для post back, как я могу получить доступ к этому свойству со своей главной страницы? –

+0

Контрольная точка ajax для скрытого фрейма, поэтому вы никогда не получите нормальную часть IsPostBack, которая, в свою очередь, не позволит вам правильно загрузить элемент управления в загрузке страницы, что вы видите. Из-за этого вы не сможете получить доступ к элементу управления или IsInFileUploadPostBack. То, что вы можете попробовать, ВСЕГДА загружает этот элемент управления на странице, но держит его скрытым, так что вы всегда можете быть уверены, что элемент управления загружен, но отображать его только при необходимости с помощью какого-либо javascript-клиента, тогда вы должны иметь возможность проверить IsInFileUploadPostBack имущество. –

+0

Также я думаю, что если вы собираетесь динамически загружать элемент управления, вам нужно сделать это раньше в жизненном цикле страницы, чтобы он правильно отображал информацию о представлении, загрузка страницы слишком поздняя (я полагаю, это было некоторое время). –