Question

I ai une forme qui se lie à un modèle et un téléchargement de fichier à l'aide du liant par défaut pour HttpPostedFileBase.

Cela fonctionne bien lors de l'utilisation Html.BeginForm (). Cependant, je voulais effectuer la même action en utilisant AJAX donc je remplacé cela avec Ajax.BeginForm () en modifiant les paramètres en conséquence.

Le modèle se fixe correctement, mais je ne peux toujours pas obtenir le téléchargement de fichiers à se lier au HttpPostedFileBase.

lie le modèle et le téléchargement de fichiers:

<% using (Html.BeginForm("MapUpdateColumns", "RepositoryAdmin", FormMethod.Post, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>

Ce ne lie que le modèle:

<% using (Ajax.BeginForm("MapUpdateColumns", "RepositoryAdmin", new AjaxOptions { UpdateTargetId = "columnMappings" }, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>

L'action du contrôleur:

public ActionResult MapUpdateColumns(DatasetViewModel model, HttpPostedFileBase sourceFile)

Si cela est possible, et si oui, qu'est-ce que je fais mal? Merci.

Était-ce utile?

La solution

Vous ne pouvez pas télécharger des fichiers avec AJAX. Une façon d'y parvenir est d'utiliser une iframe cachée qui simule un appel AJAX et effectuer le téléchargement de fichiers réel ou utiliser Flash. Voici une très belle plugin jQuery formulaire à l'aide d'un iframe caché qui est capable de manière transparente ajaxifying une soumission d'un formulaire contenant des champs de fichiers.

Autres conseils

ADD id="file" dans l'entrée de votre balise

DANS VOTRE PARAMETER ActionResult HttpPostedFileBase nom « fichier » et vue nom de la balise doit être identique

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(tbl_products tbl_products,HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                tbl_products.phototype = file.ContentType;
                tbl_products.photo =new byte[file.ContentLength ];
                file.InputStream.Read(tbl_products.photo,0, file.ContentLength);

                if(obj.insert(tbl_products))
                {
                return RedirectToAction("Index");
                }
                else
                {
                    return new HttpStatusCodeResult(HttpStatusCode.Forbidden);
                }   
            }

            return View(tbl_products);
        }

Il fonctionne pour moi

Oui je suis d'accord aussi. Vous pouvez certainement télécharger des fichiers en utilisant « Ajax.BeginForm'.Add 'enctype = "multipart / form-data"' à l'objet AjaxOptions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top