MVC 3 upload de fichier et le modèle de liaison
J'ai un formulaire d'upload qui fonctionne, mais je voudrais faire passer des informations de modèle pour ma base de données pour enregistrer le fichier avec un nom différent bien sûr.
Voici mon Rasoir vue:
@model CertispecWeb.Models.Container
@{
ViewBag.Title = "AddDocuments";
}
<h2>AddDocuments</h2>
@Model.ContainerNo
@using (Html.BeginForm("Uploadfile", "Containers", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
<input type='file' name='file' id='file' />
<input type="submit" value="submit" />
}
Voici mon Controller:
[HttpPost]
public ActionResult Uploadfile(Container containers, HttpPostedFileBase file)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/Uploads"),
containers.ContainerNo);
file.SaveAs(path);
}
return RedirectToAction("Index");
}
Le modèle de l'information n'est pas transmise au contrôleur. J'ai lu que je pourrais avoir besoin de mettre à jour le modèle, comment pourrais-je faire cela ?
- Reportez-vous à stackoverflow.com/questions/9411563/... pour un problème lié à la
Vous devez vous connecter pour publier un commentaire.
Votre formulaire ne contient pas de balise d'entrée autre que le fichier dans votre contrôleur de l'action ne vous attendez pas à obtenir quoi que ce soit d'autre que le fichier téléchargé (c'est tout ce qui est envoyée au serveur). Une façon d'y parvenir serait d'ajouter un tag caché contenant l'id du modèle qui vous permettra de le récupérer à partir de votre magasin de données à l'intérieur du contrôleur de l'action que vous postez (à utiliser si l'utilisateur n'est pas censé modifier le modèle, mais il suffit de joindre un fichier):
et puis dans votre contrôleur de l'action:
D'autre part, si vous voulez autoriser l'utilisateur à modifier ce modèle, alors vous aurez besoin de comprendre le champs de saisie pour chaque domaine de votre modèle que vous souhaitez envoyer au serveur:
et puis vous avez le modèle de classeur par défaut reconstruire ce modèle à partir de la demande:
file
commenull
etRequest.Files.Count
est 0 aussi, y aurait-il une différence si leform
est unAjaxForm
et il y arouteValues
ainsi?Résolu
Modèle
Contrôleur
Et Vue
Titre de Note de paramètre de contrôleur de l'action doit correspondre avec le nom de la saisie des éléments
IEnumerable<HttpPostedFileBase> fileUpload
->name="fileUpload[0]"
fileUpload
doit correspondre àSi vous n'avez toujours pas l'affichage des images à votre action, vous pouvez faire quelque chose comme ceci:
Pour plusieurs fichiers; note la plus récente "plusieurs" attribut pour l'entrée:
Forme:
Contrôleur:
1er télécharger jquery.form.js fichier à partir de l'url ci-dessous
http://plugins.jquery.com/form/
Écrire de code ci-dessous dans cshtml
Méthode d'Action :-