2

わかりました、私はこれに数時間行ってきました、そして私は単に解決策を見つけることができません。

ユーザーからデータを取得したい。したがって、最初に、コントローラーを使用して、モデルを受け取るビューを作成します。

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

次に、私はビューを持っています:

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

そして最後に-元のコントローラーですが、今回はデータを受け入れるように構成されています:

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

私が何をしても、(または)のcount属性は0のままなので、このコントローラーの残りの部分は重要ではありません。フォームからファイルを渡す方法が見つかりません(モデルは問題なく渡されます)。Request.FilesRequest.Files.Keys

4

2 に答える 2

3

フォームの残りの部分と一緒にファイルを投稿しないことを検討することをお勧めします。目的を達成するための正当な理由と他の方法があります。

また、MVC でのファイルのアップロードに関するこの質問このアドバイスも確認してください。

于 2010-10-07T02:53:06.010 に答える
3

ビュー モデルにファイルを追加できます。

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

その後:

[HttpPost]
public ActionResult CreateArticle(ImagesUploadModel dataFromUser)
{
    if (ModelState.IsValid)
    {
        // Use dataFromUser.File1 and dataFromUser.File2 directly here
    }
    return RedirectToAction("index");
}
于 2010-10-07T06:25:12.867 に答える