Как загрузить и связать изображение с другим классом одновременно в MVC3 - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть класс, событие, и я хочу иметь возможность иметь изображения на странице события.Я определил класс изображения, но теперь уверен, как я могу загрузить изображение.Я хочу иметь возможность хранить изображение в базе данных.

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

1 Ответ

1 голос
/ 02 декабря 2011

Если вы хотите обрабатывать загрузку файлов, вы должны использовать тип 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
    }
    ...
}

Вы также можете найти следующую запись в блоге полезной.

...