来自用户控件的 AjaxFileUpload 回发事件 ASP.NET
AjaxFileUpload postback event from a usercontrol ASP.NET
我在用户控件中有一个 AjaxFileUpload 控件,它在回发时动态加载,这里的问题是,一旦文件上传 IsPostBack
是错误的,因此用户控件没有加载,导致 OnUploadCompleteAll
事件不被触发。
我发现 AjaxFileUpload 控件有自己的回发 属性 AjaxFileUpload.IsInFileUploadPostBack
,如何从我的主 WebForm1.aspx 页面访问这个 属性?
当从 AjaxFileUpload 触发事件时,我想在 WebForm1.aspx 的页面加载上检查 IsInFileUploadPostBack
,然后加载用户控件。
这是代码。
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>
代码隐藏
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>
您从代码隐藏加载用户控件是否有任何特定原因?
ajax 控件不会创建实际的回发,这就是为什么它总是错误的。对于您似乎想要的,您应该使用非 ajax 文件上传。
成功了!!
因为只有加载控件才能访问 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();
我在用户控件中有一个 AjaxFileUpload 控件,它在回发时动态加载,这里的问题是,一旦文件上传 IsPostBack
是错误的,因此用户控件没有加载,导致 OnUploadCompleteAll
事件不被触发。
我发现 AjaxFileUpload 控件有自己的回发 属性 AjaxFileUpload.IsInFileUploadPostBack
,如何从我的主 WebForm1.aspx 页面访问这个 属性?
当从 AjaxFileUpload 触发事件时,我想在 WebForm1.aspx 的页面加载上检查 IsInFileUploadPostBack
,然后加载用户控件。
这是代码。
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>
代码隐藏
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>
您从代码隐藏加载用户控件是否有任何特定原因? ajax 控件不会创建实际的回发,这就是为什么它总是错误的。对于您似乎想要的,您应该使用非 ajax 文件上传。
成功了!!
因为只有加载控件才能访问 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();