来自usercontrol ASP.NET的AjaxFileUpload回发事件

时间:2016-06-14 11:34:45

标签: c# asp.net user-controls ajaxcontroltoolkit

我在一个usercontrol中有一个AjaxFileUpload控件,它在Postback上动态加载,这里的问题是,一旦文件上传IsPostBack为false,因为没有加载usercontrol,导致{{1} }事件不被触发。

我发现AjaxFileUpload控件有自己的回发属性OnUploadCompleteAll,如何从我的主WebForm1.aspx页面访问这个属性?

当从AjaxFileUpload触发事件时,我想在WebForm1.aspx的页面加载时检查AjaxFileUpload.IsInFileUploadPostBack,然后加载用户控件。

这是代码。

WebForm1.aspx的

IsInFileUploadPostBack

代码隐藏

<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>

WebUserControl1.ascx

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);
        }

2 个答案:

答案 0 :(得分:0)

您是否有任何特定原因要从codebehind加载usercontrol? ajax控件不会创建实际的回发,这就是为什么它始终为false。对于您似乎想要的内容,您应该使用NON-ajax文件上传。

答案 1 :(得分: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();