FileUpload et UpdatePanel: ScriptManager.RegisterPostBackControl travaux de la deuxième fois

Je suis l'élaboration d'un ASP.NET application avec C# et Visual Studio 2008 SP1. Je suis à l'aide de Formulaires web.

J'ai une page ASPX avec deux UpdatePanels, l'un sur la gauche qui détient un TreeView et d'autres sur la droite où je charger dynamiquement des contrôles utilisateur.

Un contrôle de l'utilisateur, que j'ai utilisé sur le panneau de droite, a un contrôle FileUpload et un bouton pour enregistrer ce fichier sur le serveur. Le ascx code pour enregistrer de contrôle est:

<asp:UpdatePanel ID="UpdatePanelBotons" runat="server" RenderMode="Inline" 
    UpdateMode="Conditional">
<ContentTemplate>
    <asp:Button ID="Save" runat="server" Text="Guardar" 
                onclick="Save_Click" CssClass="button" />
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="Save" />
    </Triggers>
</asp:UpdatePanel>

Je fais une publication complète à télécharger le fichier sur le serveur et de les enregistrer dans la base. Mais j'ai toujours l'obtention de Faux sur FileUpload.HasFile.

J'problème est le droit UpdatePanel. J'en ai besoin pour charger dynamiquement les commandes de l'utilisateur. Ce panneau a trois UpdatePanels à la charge de l'utilisateur trois commandes que j'utilise.

Peut-être que je peux utiliser un Async Fichier Uploader ou de supprimer le droit Panneau de mise à Jour et de faire une publication complète à la charge des contrôles dynamiquement.

Des conseils?
Mise à JOUR:

RegisterPostBackControl œuvres... la deuxième fois que je clique sur le bouton enregistrer. Première fois FileUpload.HasFile est FAUX, et la deuxième fois, c'est VRAI.

Deuxième Mise À Jour
Sur cliquez d'abord j'ai aussi vérifier ScriptManager.IsInAsyncPostBack et qui est FAUSSE. Je ne comprends RIEN!!

Pourquoi?

Charger le code de contrôle de l'utilisateur première fois, et à chaque publication est:

DynamicControls.CreateDestination ud =
            this.LoadControl(ucUrl) as DynamicControls.CreateDestination;
if (ud != null)
{
    Button save = ud.FindControl("Save") as Button;
    if (save != null) 
        ScriptManager1.RegisterPostBackControl(save);
    PanelDestination.Controls.Add(ud);
}

Merci.

Bump. Vous devez accepter l'une de ces réponses.

OriginalL'auteur VansFannel | 2010-02-15