mvc3 de téléchargement de fichiers à l'aide d'ajax formulaire de Demande.Les fichiers vides

Im à l'aide de mvc3, et suis en train de créer une série d'ajax formes que chaque téléchargement d'un fichier, sur une seule page. Voici la vue de la page:

@{
    ViewBag.Title = "Index";
}
<h2>
    Index</h2>

    @Html.Partial("_UploadItem")
    @Html.Partial("_UploadItem")
    @Html.Partial("_UploadItem")

<script type="text/javascript">
    function Go() {
        //loop through form tags
        for (var n = 0; n < document.forms.length; n++) {
            var f = document.forms[n];
            //if a dress is chosen, a caption is chosen
            //and a file is chosen, then submit the ajax form
            if (f.dressid.value != '' &&
               f.dresscaption.value != '' &&
               f.fileitem.value != '')
                f.submit();
        }
    }
</script>
<input type="button" onclick="Go();"/>

Puis le Go() fonction boucle de l'ajax formes, de vérifier si tous les 3 morceaux (dressid, dresscaption, et fileitem) sur chaque formulaire sont non-vide, et les appels soumet les formulaires qui ne, coup d'envoi d'une async télécharger.

Voici la vue partielle:

@using SoRefeising.Models
@using (Ajax.BeginForm("UploadFile", new { }, new AjaxOptions { HttpMethod = "POST" }, new { enctype="multipart/form-data"}))
{
    List<SelectListItem> items = (List<SelectListItem>)ViewBag.Dresses;

    <span>Dress</span>
    @Html.DropDownList("dressid", items, "Choose Dress");
    <span>Caption</span>
    @Html.TextBox("dresscaption")
    <input type="file" id="fileitem" />    
}

J'ai marqué chaque forme avec l'attribut multipart. Lorsque la page est générée, je reçois le texte suivant:

<form action="/upload/UploadFile" data-ajax="true" data-ajax-method="POST" enctype="multipart/form-data" id="form0" method="post">    <span>Dress</span>
<select id="dressid" name="dressid"><option value="">Choose Dress</option>
<option value="1">Simpson01</option>
<option value="2">Simpson02</option>
</select>    <span>Caption</span>
<input id="dresscaption" name="dresscaption" type="text" value="" />    <input type="file" id="fileitem" />    
</form>
<form action="/upload/UploadFile" data-ajax="true" data-ajax-method="POST" enctype="multipart/form-data" id="form1" method="post">    <span>Dress</span>
<select id="dressid" name="dressid"><option value="">Choose Dress</option>
<option value="1">Simpson01</option>
<option value="2">Simpson02</option>
</select>    <span>Caption</span>
<input id="dresscaption" name="dresscaption" type="text" value="" />    <input type="file" id="fileitem" />    
</form>
<form action="/upload/UploadFile" data-ajax="true" data-ajax-method="POST" enctype="multipart/form-data" id="form2" method="post">    <span>Dress</span>
<select id="dressid" name="dressid"><option value="">Choose Dress</option>
<option value="1">Simpson01</option>
<option value="2">Simpson02</option>
</select>    <span>Caption</span>
<input id="dresscaption" name="dresscaption" type="text" value="" />    <input type="file" id="fileitem" />    
</form>

Tout semble ok...

Voici le contrôleur de l'action qui est appelée

[HttpPost]
public ActionResult UploadFile(string dressid, string dresscaption)
{
HttpPostedFileBase hpf = Request.Files[0] as HttpPostedFileBase;
...

Lorsque l'action est appelée, à la Demande.Les fichiers de la collection a 0 articles, plutôt que le fichier sélectionné. Je l'ai activé javascript discret, le discret fichier est chargé dans la page principale, et travaille sur d'autres pages.

J'ai vu quelques messages sur le forum à propos d'être prudent avec les tailles de fichier. Le fichier que je suis en train de tester avec < 2k

Des idées pourquoi il n'y a pas d'éléments dans la Requête.Fichiers?

Grâce

Il est possible. Je l'ai fait:). Voici le lien: [stackoverflow.com/a/13522052/1067149][1] [1]: stackoverflow.com/a/13522052/1067149

OriginalL'auteur Rick Hodder | 2011-12-14