我在一个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);
}
答案 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();