Frage

Ok, ich habe mehrere Stunden bei dem schon so, und ich kann einfach nicht die Lösung finden.

Ich möchte einige Daten von meinem Benutzer bekommen. Also zuerst, verwende ich einen Controller eine Ansicht zu erstellen, die ein Modell erhält:

public ViewResult CreateArticle()
{
    Article newArticle = new Article();
    ImagesUploadModel dataFromUser = new ImagesUploadModel(newArticle);
    return View(dataFromUser);
}

Dann habe ich die Ansicht:

<asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">

    <h2>AddArticle</h2>

    <% using (Html.BeginForm("CreateArticle", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" })){ %>


                <%= Html.LabelFor(model => model.newArticle.Title)%>
                <%= Html.TextBoxFor(model => model.newArticle.Title)%>

                <%= Html.LabelFor(model => model.newArticle.ContentText)%>
                <%= Html.TextBoxFor(model => model.newArticle.ContentText)%>

                <%= Html.LabelFor(model => model.newArticle.CategoryID)%>
                <%= Html.TextBoxFor(model => model.newArticle.CategoryID)%>

                <p>
                    Image1: <input type="file" name="file1" id="file1" />
                </p>
                <p>
                    Image2: <input type="file" name="file2" id="file2" />
                </p>

            <div>
                <button type="submit" />Create
            </div>



    <%} %>


</asp:Content>

und schließlich - die Original-Controller, aber dieses Mal konfiguriert, um die Daten zu übernehmen:

   [HttpPost]
    public ActionResult CreateArticle(ImagesUploadModel dataFromUser)
    {
        if (ModelState.IsValid)
        {
            HttpPostedFileBase[] imagesArr;
            imagesArr = new HttpPostedFileBase[2]; 
            int i = 0;
            foreach (string f in Request.Files)
            {
                HttpPostedFileBase file = Request.Files[f];
                if (file.ContentLength > 0)
                    imagesArr[i] = file;
            }

Der Rest dieses Controller spielt keine Rolle, da, egal was ich tue, das count Attribut Request.Files (oder Request.Files.Keys) 0 bleibt ich einfach keinen Weg finden, kann die Dateien aus dem Formular zu übergeben (das Modell geht nur Ordnung).

War es hilfreich?

Lösung

Sie mögen vielleicht nicht prüfen, um die Dateien mit dem Rest der form- Entsendung gibt es gute Gründe und andere Möglichkeiten können Sie erreichen, was Sie wollen.

Überprüfen Sie auch, diese Frage und dieser Rat in Bezug auf das Hochladen von Dateien in MVC.

Andere Tipps

Sie können die Dateien auf Ihren View-Modell hinzufügen:

public class ImagesUploadModel
{
    ...
    public HttpPostedFileBase File1 { get; set; }
    public HttpPostedFileBase File2 { get; set; }
}

Und dann:

[HttpPost]
public ActionResult CreateArticle(ImagesUploadModel dataFromUser)
{
    if (ModelState.IsValid)
    {
        // Use dataFromUser.File1 and dataFromUser.File2 directly here
    }
    return RedirectToAction("index");
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top