Vra

Ok, ek het al baie op hierdie vir 'n paar uur en ek kan eenvoudig nie die oplossing te vind.

Ek wil 'n paar data te kry uit my gebruiker. So die eerste, ek gebruik 'n kontroleerder van 'n oog wat 'n Model ontvang skep:

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

Toe het ek die siening:

<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>

en uiteindelik - die oorspronklike kontroleerder, maar hierdie keer ingestel om die data te aanvaar:

   [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;
            }

Die res van hierdie kontroles maak nie saak sedert maak nie saak wat ek doen, die count kenmerk van Request.Files (of Request.Files.Keys) bly 0. Ek kan eenvoudig nie 'n manier om die lêers van die vorm slaag vind (die Model gaan net fyn).

Was dit nuttig?

Oplossing

Jy mag dalk wil om te oorweeg nie plaas die lêers met die res van die vorm- daar goeie redes en ander maniere jy kan bereik wat jy wil hê.

Ook, check hierdie vraag en hierdie raad met betrekking tot lêers wat gelaai is in MVC.

Ander wenke

Jy kan die lêers toe te voeg tot jou siening model:

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

En dan:

[HttpPost]
public ActionResult CreateArticle(ImagesUploadModel dataFromUser)
{
    if (ModelState.IsValid)
    {
        // Use dataFromUser.File1 and dataFromUser.File2 directly here
    }
    return RedirectToAction("index");
}
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top