0

我有一个 aspx 页面和一个代码。页面内容是通过 XML 和 XSLT 动态创建的tContent.Controls.Add(master.ParseControl(ApplyXslt(xml, xsl_trans, xsl_args)));tcontrol控制在哪里<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">。在 XSLT 中,我有一个 Telerik 控件

 <telerik:RadAsyncUpload RenderMode="Lightweight" ID="AsyncUpload1" runat="server" 
                                OnClientFilesUploaded="OnClientFilesUploaded" OnFileUploaded="AsyncUpload1_FileUploaded"
                                MaxFileSize="2097152" AllowedFileExtensions="jpg,png,gif,bmp"
                                AutoAddFileInputs="false" Localization-Select="Upload Image" />
        <asp:Label ID="Label1" Text="*Size limit: 2MB" runat="server" Style="font-size: 10px;"></asp:Label>

该控件有一个名为的事件onFileUploaded,我将其设置为这样OnFileUploaded="AsyncUpload1_FileUploaded"。在我的代码后面我有一个这样定义的函数

protected void AsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)
{
    string newfilename = "logo." + e.File.GetExtension();
    string path = "/customer/" + MiscFunctions.currentCustXml+"/"+ newfilename;
    e.File.SaveAs(path);
}

我知道该onFileUploaded事件是在回发时触发的。但由于某种原因,它没有被调用。但是,当我将控件直接剪切并粘贴到 的内容中时<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">,事件处理程序会被正确触发。起初我以为是因为在控件初始化后添加了生成的内容,在Page_Load调用时添加了类型化的内容,因此 Telerik 控件未正确初始化。所以我然后将代码移动到Page_Preinit并且事件仍然没有被调用。有什么我想念的吗?还是在页面生命周期之前初始化控件时我做不到?

4

1 回答 1

0

使用标记中ParseControl已定义Event-Handlers的 with 将不起作用。

您需要解析/添加控件,然后在代码中添加事件处理,如下所示:

tContent.Controls.Add(master.ParseControl(ApplyXslt(xml, xsl_trans, xsl_args)));
RadAsyncUpload uploadControl = (RadAsyncUpload)tContent.FindControl("AsyncUpload1");
uploadControl.FileUploaded += AsyncUpload1_FileUploaded; 
于 2021-11-03T08:22:12.410 回答