0
votes

Formulaire d'affichage avec champs d'entrée et plusieurs fichiers sélectionnés à l'aide de jQuery Ajax dans ASP.NET CORE

Je tente de poster manuellement un formulaire dans ASP.NET CORE à l'aide de JQuery Ajax dès que l'utilisateur finit de sélectionner plusieurs fichiers. Le téléchargeur que j'utilise a un événement "sélectionné" où j'aimerais poster le formulaire sur le serveur à l'aide de jqueryajax.

Ce même formulaire correspond parfaitement au serveur lors de l'ajout d'un bouton Soumettre et de la cliquer sur le UI. Les fichiers sont liés et le produit est lié. Cependant, j'essaie d'éviter le scintillement de la page. Comme une solution alternative, je soumets le formulaire en appelant: $ ("# formulaire"). Soumettre (); Dans la fonction OnSélectionnez plutôt que la demande AJAX. P>

Le modèle ressemble à ce qui suit: p> xxx pré>

forme ressemble à ce qui suit: p>

public async Task<ActionResult> OnPostAsync(FileUploadViewModel vm)
{
}


4 commentaires

S'il vous plaît montrer votre méthode d'action


@Camiloterevinto J'ai téléchargé des informations supplémentaires sur la méthode d'action. J'utilise des pages de rasoir qui fonctionne légèrement différente de MVC. La page elle-même a les propriétés à ce sujet afin que le modèle de vue puisse être éliminé. Cependant, j'essayais également d'avoir également un point de vue comme un paramètre. Rien n'est contraignant. Ce post est la chose la plus proche que j'ai trouvée à ce que j'essaie de faire, mais il ne le fait que pour un seul fichier. De plus, je ne peux même pas obtenir ce travail. LearnRazorPages.com/razor-pages/ajax/upload-files


Hmmm, je ne suis pas sûr des pages de rasoir, mais en MVC, ce serait faux. Vous auriez besoin d'un [deform] FileduploadViewModel VM , qui pourrait être la valeur par défaut


En pensant un peu plus à ce sujet, vous devriez utiliser formdata.append ("fichiers", fichiers [i]);


3 Réponses :


0
votes

Selon formdata.append () , Je pense que vous devez utiliser xxx

au lieu de xxx

pour ajouter plusieurs fichiers ...


4 commentaires

J'ai essayé cela et finit toujours avec une liste de 0 fichiers. Une idée s'il y a autre chose qui va mal avec ma demande Ajax? Je ne suis même pas sûr si processdata et contenttype devraient être faux. J'ai vu cela dans un autre post.


Est-ce que vous plaisantez? La documentation indique et étant compatible avec les conventions de dénomination de PHP . Où voyez-vous PHP ici?


comme avec les données de formulaire régulières, vous pouvez ajouter plusieurs valeurs avec le même nom. et entre parenthèses, ils pointaent PHP pour ... Changez votre homme de lunettes


C'est seulement un nom de variable, est-ce si difficile à comprendre? C'est comme dire que changer int mOname = "asd"; pour int sint = "asd" le permettra soudainement fonctionner, ces [] sont inutiles là-bas



0
votes

Vous pouvez recevoir le fichier ci-joint sous forme de paramètre de contrôleur distinct de type ienumérable »Notez que pour que le mappage soit effectué correctement, vous devez choisir la nommée appropriée pour les commandes de fichier d'entrée HTML, par exemple si votre contrôleur aura La signature suivante xxx

puis les commandes d'entrée HTML doivent être nommées: xxx

et ainsi de suite

Don ' t savoir s'il est possible de lier les commandes directement sur le modèle sans créer de liant modèle personnalisé, mais j'ai toujours utilisé cette option, assez simple et facile


3 commentaires

J'ai besoin de plusieurs fichiers téléchargés à partir d'une seule entrée de fichier.


Httppostedfilebase est pas ASP.NET CORE. ASP.NET CORE utilise siformfile


Ensuite, vous pouvez créer une commande d'entrée et la mapper sur un paramètre d'action de type IEnumerable ou comme Blake suggéré si vous avez suggéré IFormFile



0
votes

Je suis peut-être un peu tard à la fête, mais j'avais exactement le même problème que je voulais poster manuellement ma demande en utilisant Ajax avec les valeurs de formulaire que l'utilisateur avait entré ainsi que tous les fichiers sélectionnés pour le téléchargement.

Parce que j'appelle le contrôleur manuellement avec Ajax, les fichiers n'étaient pas inclus.
Voici ma demande de post Ajax.

XXX

Voici mon Propriété du modèle.
xxx

et enfin voici mon maquillage de page CSHTML xxx

Remarque: faire Bien sûr, vous incluez ce ENCTYPE = "Multipart / Form-Data" dans votre


0 commentaires