2010-03-29 12 views
0

J'utilise un aspic: contrôle de téléchargement pour télécharger une image et je suis en utilisant la propriété postedfile pour insérer le chemin d'accès à la base de données. Dans mon formulaire, j'ai une liste déroulante avec autopostback = true où l'utilisateur peut sélectionner un sujet pour remplir une liste de catégories. Pendant cette publication, la valeur du fichier posté est perdue et après quelques recherches, j'ai découvert que la valeur du fichier affiché n'est pas conservée dans viewstate pour des raisons de sécurité. Est-ce que quelqu'un d'autre a trouvé comment contourner cela?asp: téléchargement postedfile perdu pendant postback

+0

Les publications sont la racine de tous les maux! –

Répondre

3

Voilà comment cela fonctionne. La valeur d'un type d'entrée = "fichier" n'est jamais utilisée lors de l'analyse d'une page HTML. C'est un énorme risque de sécurité, donc aucun navigateur moderne ne leur permettra de «retenir» les valeurs. Ainsi, dans ASP.NET, chaque publication "perd" la valeur.

Sur un postback avec un fichier dans le contrôle d'entrée, assurez-vous d'enregistrer la valeur quelque part, vous pouvez obtenir plus tard.

Ou ne pas concevoir un formulaire qui utilise un téléchargement de fichier pour avoir plusieurs postbacks. Peut-être envisager d'enrouler votre liste déroulante et le contrôle associé dans un UpdatePanel afin que le téléchargement du fichier ne soit pas effacé.

1

Je voudrais essayer de charger la liste des cases à cocher, sauver éventuellement via JavaScript/AJAX les valeurs de la liste des cases à cocher à un champ caché que je peux conserver les valeurs sur un postback.

Cela peut ne pas être idéal, mais si vous voulez faire tout cela sans postbacks, à un moment donné vous allez devoir utiliser JavaScript.

1

Vous pouvez essayer le contrôle AsynchFileUpload dans AjaxControlToolkit, mais il n'existe pas de solution de contournement pour le fileupload standard, sauf si vous enregistrez le fichier dans un dossier temporaire et chargez une liste de fichiers à partir de ce dossier temporaire.

2

L'attribut de valeur d'un élément de fichier d'entrée ne peut simplement pas être réglé par quoi que ce soit, sauf interaction utilisateur. C'est ainsi que cela fonctionne, et cela ne changera pas pour des raisons de sécurité. Cela dit, votre solution consiste à éliminer la publication.