Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# ASP.NET MVC

Войти
Регистрация
Восстановить пароль
 
Фарух
0 / 0 / 0
Регистрация: 05.05.2015
Сообщений: 2
#1

Как при загрузке картинок привязать их к адресу с выпадающего списка - C# MVC

03.11.2015, 02:47. Просмотров 361. Ответов 2
Метки нет (Все метки)

Согласно с ТЗ, была спроектирована база данных для ресторанов города «RestaurantsDb», в которой создана таблица «Restaurants», содержащая название ресторана и его идентификатор. Исходя из того что ресторан может являться частью сети ресторанов, то для указания адресов была создана отдельная таблица «Addresses». Как указано в задании, надо реализовать фотогалерею для каждого ресторана, для этого создал таблицу «Images», в которой решил хранить пути к картинкам либо к папке в которой она хранится, был также другой вариант загружать картинки в саму базу в виде массива байтов, но отказался от нее по причине возможной низкой производительностью по мере роста базы картинками особенно картинками больших размеров. Картинки, которые будут загружены в базу решил делать привязку к адресам ресторана.

Мой вопрос заключается в том как правильно сделать привязку картинки к определенному адресу, вторичным вопросом заключается можно ли будет при загрузке картинки в админ панеле, выбрать ресторан к которому будет относиться картинка, а затем в другом уже выпадающем списке выбрать адрес ресторана и после нажатия кнопки загрузить, сформируется иерархия папок из названия ресторанов, а внутри этих папок вложенные папки с названием адресов и уже в них будут храниться эти картинки.
Благодарю за содействие!


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@model MyImagesApp.MyModels.Images
 
@{
    ViewBag.Title = "Create";
}
 
<h2>Create</h2>
 
 
@using (Html.BeginForm("Create", "Images", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>Images</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.AddressId, "Выберите адрес", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("AddressList", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.AddressId, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.Image, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Image, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Image, "", new { @class = "text-danger" })
                <input type="file" multiple="multiple" name="files" id="files" />
            </div>
        </div>
 
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
 
<div>
    @Html.ActionLink("Back to List", "Index")
</div>
 
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
        // GET: Images/Create
        public ActionResult Create()
        {
            ViewBag.AddressList = new SelectList(db.Addresses, "Id", "Address");
            return View();
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "Id,AddressId,Image,ImageMimeType,Folder")] Images images,
             HttpPostedFileBase[] files)
        {
            if (ModelState.IsValid)
            {
                foreach (var file in files)
                {
                    Images img = new Images();
                    /*Geting the file name*/
                    string fileName = System.IO.Path.GetFileName(file.FileName);
                    /*Saving the file in server folder*/
                    file.SaveAs(Server.MapPath("~/Images/" + fileName));
                    string filePathToSave = "Images/" + fileName;
                    /*HERE WILL BE YOUR CODE TO SAVE THE FILE DETAIL IN DATA BASE*/
                    img.AddressId = 1;// в этой строчке нужно присвоить id адреса
                    img.Image = filePathToSave;
                    db.Images.Add(img);
                    db.SaveChanges();
                }
                //db.Images.Add(images);
                //db.SaveChanges();
                return RedirectToAction("Index");
            }
 
            ViewBag.AddressId = new SelectList(db.Addresses, "Id", "Address", images.AddressId);
            return View(images);
        }
0
Миниатюры
Как при загрузке картинок привязать их к адресу с выпадающего списка   Как при загрузке картинок привязать их к адресу с выпадающего списка  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2015, 02:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как при загрузке картинок привязать их к адресу с выпадающего списка (C# MVC):

Сортировка выпадающего списка - C# MVC
Подскажите, в представлении создал выпадающий список, никак не могу найти информацию по сортировке в списка по алфавиту? &lt;div...

Использование выпадающего списка на странице - C# ASP.NET
Есть следующая задача: необходимо на страничке вывести два выпадающих списка данные, которых берутся из запросов базы Access, значения...

Фильтрация таблицы с использованием выпадающего списка - C# MVC
Здравствуйте! Есть страничка с одной большой таблицей, содержимое которой должно фильтроваться путем ввода запроса в текстовое поле или...

Не подключается шаблон выпадающего списка. (MVC 4) - C# MVC
Собственно нахожусь в полном непонимании, где налажал. Создаю по всем правилам такой шаблон: @using FT.Models @model...

Передать значение из выпадающего списка на сервер. $.ajax - C# MVC
Всем доброго времени суток! Имеется два выпадающих списка, первый содержит название марок автомобилей, в качестве значений Id марок,...

Как получить относительные ссылки в DLE при загрузке картинок? - DLE
При загрузке картинки в новости ссылка появляется абсолютная. Как сделать, чтобы она была относительной, не изменяя ее вручную?

2
Roman_rc
26 / 26 / 5
Регистрация: 04.02.2013
Сообщений: 250
03.11.2015, 07:19 #2
можно ли будет при загрузке картинки в админ панеле, выбрать ресторан к которому будет относиться картинка
Конечно можно, на мой взгляд хорошее решение.
Я всегда создаю иерархию папок (если необходимо) и сохраняю пути к изображениям в базе. Сами изображения не сохраняйте в базе это не очень хорошее решение. Такое решение хорошо, но не идеально при малых картинках типа аватарки на одну запись. Остальные картинки только в папках.

Если ваша логика создания папок и картинок внутри них позволит находить эти картинке на основе иерархии папок то можно не сохранять пути в базе, но название файлов все равно придется сохранять где-то. Но чтобы не заморачиваться я бы рекомендовал пути пока сохранять.
0
Фарух
0 / 0 / 0
Регистрация: 05.05.2015
Сообщений: 2
03.11.2015, 12:52  [ТС] #3
Не подскажите как можно будет передать айдишник выбранного адреса из DropDownList во вьюшке, в контроллер, чтоб присвоить его внешнему ключу "AddressId" в таблице "Images". Сами загружаемые картинки передаются, а далее при сохранении уже их в базе, должен указать к какому именно адресу их привязываю.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2015, 12:52
Привет! Вот еще темы с ответами:

Как удалить копии принтера из выпадающего СПИСКА меню при печати? - Windows 10
Привет! Когда нужно рапечатать документ, кликаю &quot;файл - печать&quot; и в списке принтеров (помимо нужного мне принтера) есть еще 6 копий...

Обновление выпадающего списка в форме в зависимости от выпадающего списка выше - MS Access
Есть 3 таблицы (1,2,3) Первая и вторая связаны между собой через таблицу 3. Есть 3 выпадающих списка в Form1. Нужно что бы во втором...

Изменение содержимого простого списка при апдейте выпадающего списка - MS Access
Добрый день! Суть моей просьбы о помощи такова: На форме (пока) расположен выпадающий список с определенными значениями и ниже...

Ошибка при загрузке "Инструкция по адресу "0x0100466a" обратилась к памяти по адресу "0x00000000" - Windows XP
Уважаемые программисты и сисадмины!Прошу вашей помощи.У меня проблема следующего содержания: при загрузке системы,еще до приветствия,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru