0

イベントというクラスがあり、イベントページに画像を表示できるようにしたいと考えています。画像クラスを定義しましたが、画像をアップロードする方法がわかりました。画像をデータベースに保存できるようにしたい。

public class Event
    {
        public int Id { get; set; }

        public string Title { get; set; }

        public string  Description { get; set; }

        public string Address { get; set; }

        public string AddressTwo { get; set; }

        public virtual Person Owner { get; set; }

        public DateTime Date { get; set; }

        public virtual Image Image { get; set; }
    }

 public class Image 
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public string AlternateText { get; set; }

        public virtual string CssClass { get; set; }

        public Byte[] File { get; set; }
    }
4

1 に答える 1

1

ファイルのアップロードを処理する場合は、バイト配列ではなく、HttpPostedFileBaseタイプを使用して画像を表す必要があります。

public class Image 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string AlternateText { get; set; }
    public virtual string CssClass { get; set; }
    public HttpPostedFileBase File { get; set; }
}

次に、ビューでファイル入力を使用します。

@model Event
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <div>
        @Html.LabelFor(x => x.Image.File)
        @Html.TextBox(x => x.Image.File, new { type = "file" })
    </div>
    ... some other fields
    <button type="submit">OK</button>
}

そして最後に、フォームが投稿され、ファイルを保存するコントローラー アクションが作成されます。

[HttpPost]
public ActionResult Upload(Event model)
{
    if (model.Image != null && model.Image.ContentLength > 0)
    {
        // an image was selected by the user => process and store it into the database
    }
    ...
}

次のブログ投稿も役立つ場合があります。

于 2011-12-02T07:49:38.633 に答える