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):
@using (Html.BeginForm("Uploadfile", "Containers", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.HiddenFor(x => x.Id)
<input type="file" name="file" id="file" />
<input type="submit" value="submit" />
}
et puis dans votre contrôleur de l'action:
[HttpPost]
public ActionResult Uploadfile(int id, HttpPostedFileBase file)
{
Containers containers = Repository.GetContainers(id);
...
}
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:
@using (Html.BeginForm("Uploadfile", "Containers", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.TextBxFor(x => x.Prop1)
@Html.TextBxFor(x => x.Prop2)
@Html.TextBxFor(x => x.Prop3)
<input type="file" name="file" id="file" />
<input type="submit" value="submit" />
}
et puis vous avez le modèle de classeur par défaut reconstruire ce modèle à partir de la demande:
[HttpPost]
public ActionResult Uploadfile(Container containers, HttpPostedFileBase file)
{
...
}