3

ASP.NET MVC は初めてです。いくつかの画像フィールド ( ) を持つモデルがありますbyte[]

コントローラーとビューも作成しましたが、コードを実行すると、画像フィールドをアップロードするものは何もありません。私の画像はモデルの一部のフィールドであり、他のフィールドは文字列です。

私を助けてください。コントローラーとビューはどうあるべきですか?

モデルクラス:

  public int Id { get; set; }
  public string Name { get; set; }
  public string Activity { get; set; }
  public string Address { get; set; }
  public string Tel { get; set; }
  public string Work_Hours { get; set; }
  public byte[] img1 { get; set; }
  public byte[] img2 { get; set; }

コントローラー (作成) :

 public ActionResult Create(Shop shop)
    {
        try
        {

            var bytes = new byte[0];
            ViewBag.Mime = "image/png";

            if (Request.Files.Count == 1)
            {
                bytes = new byte[Request.Files[0].ContentLength];
                Request.Files[0].InputStream.Read(bytes, 0, bytes.Length);
                ViewBag.Mime = Request.Files[0].ContentType;
            }

            db.Shop.Add(shop);
            db.SaveChanges();

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

私のビューのすべての部分は次のようになります:

 <div class="editor-label">
        <%: Html.LabelFor(model => model.Activity) %>
    </div>
    <div class="editor-field">
        <%: Html.EditorFor(model => model.Activity) %>
        <%: Html.ValidationMessageFor(model => model.Activity) %>
    </div>
<div class="editor-label">
        <%: Html.LabelFor(model => model.img2) %>
    </div>
    <div class="editor-field">
        <%: Html.EditorFor(model => model.img2)%>
        <%: Html.ValidationMessageFor(model => model.Shop_img2) %>
    </div>

しかし、画像のアップロードには何を使用すればよいでしょうか?!

4

1 に答える 1

1
    @{ Html.BeginForm("Load", "Image", FormMethod.Post, 
        new { enctype = "multipart/form-data" }); }
    <input id="file" type="file" name="file" />
    <input id="submit" type="submit" value="Upload Image" style="display: none;" />
    @{ Html.EndForm(); }

    [HttpPost]
    public ActionResult Load(HttpPostedFileBase file)
    {
        if (file.ContentLength == 0)
            RedirectToAction("LoadImage");

        var fileBytes = new byte[file.ContentLength];
        file.InputStream.Read(fileBytes, 0, file.ContentLength);

        // save fileByptes here...

        return RedirectToAction("Edit");
    }
于 2012-10-10T20:03:44.383 に答える