Téléchargement du fichier lié au Viewmodel
J'ai un formulaire où je suis le téléchargement de plusieurs fichiers et il ya un couple de zones de texte et quelques cases à cocher associées à chaque fichier en cours de téléchargement.
J'ai vu des exemples pour le téléchargement de plusieurs fichiers, où la actionresult signature est quelque chose comme ceci:
[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> fileUpload)
Cependant, je ne peux pas trouver un exemple où je peux avoir plusieurs fichiers téléchargés où mon actionresult signature est quelque chose comme ceci:
[HttpPost]
public ActionResult Upload(MyViewModel vm)
La raison pour laquelle je tiens à ce dernier d'être publié est parce que je pense que son plus propre qu'à l'aide de la FormCollection variable et parce que je veux à chaque fichier en cours de téléchargement et les données ajoutées avec son associé zones de texte à être regroupés par voie de List<FileUploadPacket>
qui fera partie du ViewModel
Mise à JOUR
Mon point de Vue, le modèle ci-dessous:
public class EmployeeVM
{
public int EmployeeID {get ;set;}
public string EmpName {get ;set;}
//Other properties
public List<FileUploadPacket> FileUploadPackets { get; set; }
}
La FileUploadPacket classe qui a la propriété de type HttpPostedFileBase
public class FileUploadPacket
{
public int FileID {get ;set;}
public string UserEnteredDesc {get ;set;}
//some more other properties
public HttpPostedFileBase UpFile { get; set; }
}
Extrait de Code de mon point de vue.aspx ci-dessous
<%: Html.TextBoxFor(model => model.EmpName, new { maxLength = 50 })%>
Upload your files here:
<input type="file" id="UpFile" name="UpFile" value="ActionHandlerForForm" />
<%: Html.TextBoxFor(model => model.FileUploadPackets[0].UserEnteredDesc )%>
<input type="file" id="UpFile" name="UpFile" value="ActionHandlerForForm" />
<%: Html.TextBoxFor(model => model.FileUploadPackets[1].UserEnteredDesc )%>
Comme vous pouvez le voir, j'ai tous les autres propriétés spécifiques à ce seul fichier en cours de téléchargement gardé dans sa propre classe. De sorte que, dans mon formulaire un employé peut entrer son nom et de le transférer ses fichiers et de fournir une description et d'autres détails pour chaque fichier. Si je déplace le public HttpPostedFileBase UpFile { get; set; }
propriété de la EmployeeVM
classe alors je vais avoir à recueillir tous les fichiers séparément dans un tableau et de le connecter manuellement un fichier de description. Il n'y a pas moyen de le faire en gardant le UpFile
propriété dans le FileUploadPacket
classe elle-même?
Je suis en utilisant le aspx moteur d'affichage.
S'il vous plaît aider. Merci pour votre temps...
OriginalL'auteur user20358 | 2012-05-25
Vous devez vous connecter pour publier un commentaire.
GetHtml
helper n'est pas une partie de framework mvc, vous devriez regarder pour des tiers, de la bibliothèque contenant de l'aide.Téléchargement du fichier qui fait partie du ViewModel est simple. Fondamentalement, il va comme ceci
Définir le modèle de vue
À l'intérieur de
Views/Shared/EditorTemplates
, créerMyViewModel.cshtml
Et de la vue, correspondant à l'action télécharger
attribut obligatoire est important de téléchargement de fichiers.
Et c'est tout, une fois que le formulaire est soumis, vous devriez voir le fichier téléchargé à l'intérieur de
[HttpPost]
action,vm.MyFile
.enctype="multipart/form-data"
partie résolu pour moi.mettez en Surbrillance +1 Le enctype="multipart/form-data" partie résolu pour moi.
OriginalL'auteur archil
Le correctif à ce est en train de changer la façon dont vous le Nom et l'ID du contrôle de téléchargement.
Cela a fonctionné pour moi!! Espérons que cela aide quelqu'un d'autre..
OriginalL'auteur user20358