Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/55: Рейтинг темы: голосов - 55, средняя оценка - 4.91
 Аватар для NSvLS
2 / 2 / 0
Регистрация: 16.06.2011
Сообщений: 40

DropDownList: элемент по умолчанию

09.05.2012, 19:10. Показов 10380. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Запарился я с ddl суть вот в чем:
В представлении хочу выводить список dropdownlist`ов и в каждом элемент по умолчанию должен быть задан переменной j.Status
C#
1
2
3
4
5
6
@foreach (var j in ViewBag.order)
{
 @Html.DropDownListFor(j.Status,new SelectList(new[] { "Ожидание", "В пути",  "Доставлен", "Отменен" }
                .Select(x => new { value = x, text = x }),
                "value", "text", ""), j.Status);    
}
Однако эта конструкция не работает =(
Как это можно сделать не изобретая велосипеда?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2012, 19:10
Ответы с готовыми решениями:

Неактивный элемент по-умолчанию в DropDownList
Здравствуйте, есть такая проблема. В DropDownList по умолчанию ставится первый элемент в списке. Нужно сделать, чтобы по умолчанию не был...

Как получить выделенный элемент DropDownList?
Приветствую всех. кусочек кода вьюшки @using (Html.BeginForm("Details", "EditCity")) { <h3>Выберите страну</h3> ...

При открытии страницы показать определенный элемент в DropDownList
Добрый день! столкнулся с проблемой. у меня есть DropDownList, в котором есть юзеры: User: <%=...

11
19 / 19 / 3
Регистрация: 08.11.2010
Сообщений: 78
10.05.2012, 08:00
У меня ddl инициализируется одним или двумя параметрами. Первый - это список SelectItem, который я создаю в контроллере, второй - это значение по умолчанию. Зачем у вас дублируется j.Status в 1 и 3 параметре?
0
 Аватар для NSvLS
2 / 2 / 0
Регистрация: 16.06.2011
Сообщений: 40
10.05.2012, 09:47  [ТС]
Опечатка ) в первом случае там j=>j.Status
Хорошо отправил сие действие в контрол
C#
1
2
3
4
ViewData["Status"] =
                new SelectList(new[] { "В пути", "Ожидание", "Доставлен", "Отменен" }
                .Select(x => new { value = x, text = x }),
                "value", "text", "");
а в представлении
C#
1
@Html.DropDownListFor("Status",j.Status);
но всеровно както не сраслось..
p.s. в j.Status у меня находится текст который должен стоять по умолчанию в дроплисте
0
42 / 42 / 6
Регистрация: 13.06.2011
Сообщений: 55
10.05.2012, 09:59
Контроллер:
C#
1
2
3
4
ViewBag.Status =
                new SelectList(new[] { "В пути", "Ожидание", "Доставлен", "Отменен" }
                .Select(x => new { value = x, text = x }),
                "value", "text");
Представление:
C#
1
@Html.DropDownList("Status", "Текст по умолчанию")
0
 Аватар для NSvLS
2 / 2 / 0
Регистрация: 16.06.2011
Сообщений: 40
10.05.2012, 11:54  [ТС]
А как сделать что-бы он не добавлял новое поле?
Изображения
 
0
19 / 19 / 3
Регистрация: 08.11.2010
Сообщений: 78
10.05.2012, 12:13
В представлении, при вызове DropDownList, указывается текст по умолчанию для того случая, если начальное значение будет пустым. Начальное значение указывается при создании SelectList последним параметром. В Вашем случае начальное значение "". Либо в контроллере подгружать начальное значение при создании SelectList, но как я понял вам надо выбранное значение брать в представлении из модели, в таком случае надо разобраться с синтаксисом создания SelectList в представлении.
Напишите потом какой вариант выберете и какая реализация.
0
42 / 42 / 6
Регистрация: 13.06.2011
Сообщений: 55
10.05.2012, 13:11
Контроллер:
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
namespace MvcApplication1.Controllers {
    public class HomeController : Controller {
        public ActionResult Index() {
            ViewBag.Message = "Welcome to ASP.NET MVC!";
            ViewBag.order = new List<Order> { new Order { Status = "Ожидание" },
                                              new Order { Status = "В пути" },
                                              new Order { Status = "Доставлен" },
                                              new Order { Status = "Отменен" },
                                              new Order { Status = "Доставлен" },
                                              new Order { Status = "В пути" },
                                              new Order { Status = "Отменен" },
                                              new Order { Status = "Ожидание" },
                                              new Order { Status = "Отменен" } };
            return View();
        }
 
        public ActionResult About() {
            return View();
        }
 
        public class Order {
            public string Status { get; set; }
        }
    }
}
Представление:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@{
    ViewBag.Title = "Home Page";
    int i = 0;
}
 
<h2>@ViewBag.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
 
@foreach (var j in (List<MvcApplication1.Controllers.HomeController.Order>)ViewBag.order) {
    @Html.DropDownList("order" + i++, new SelectList(new[] { "Ожидание", "В пути", "Доставлен", "Отменен" }
                .Select(x => new { value = x, text = x }),
                    "value", "text", j.Status))<br />
}
1
 Аватар для NSvLS
2 / 2 / 0
Регистрация: 16.06.2011
Сообщений: 40
10.05.2012, 13:42  [ТС]
В результате виноват оказался j.Status хотя не могу понять почему...
Если использовать:
C#
1
2
3
4
@Html.DropDownList((string)j.Status, new SelectList(new[] 
{ "Ожидание", "В пути", "Доставлен", "Отменен" }
       .Select(x => new { value = x, text = x }),
       "value", "text", "В пути"))  // тогда в этом случае все поля выберут значение "В пути"
Однако если поставить j.Status ..то почему-то он не хочет брать данные от туда =( Пробовал писать (string)j.Status вместо "В пути" аналогично без результата. Вроде бы элементарно но ступор какой-то.

p.s. Тут возник еще один вопрос по дроплистам... а как получить выбранное пользователем значение? в вебформах был SelectedIndex для этого ...а здесь как?
0
42 / 42 / 6
Регистрация: 13.06.2011
Сообщений: 55
10.05.2012, 14:26
NSvLS, в твоем примере все нормально работает, если вместо "В пути" поставить j.Status. Может ошибся где?
Еще момент. Первый аргумент в методе Html.DropDownList() - это имя (в результирующей html-разметке будет атрибутом name элемента). По этому имени ты можешь получить значение в контроллере. По хорошему, имя должно быть на англ. яз. и уникальным во избежание всяких трабл. Смотри, что получается у тебя в html:
HTML5
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
<select name="Ожидание"><option selected="selected" value="Ожидание">Ожидание</option>
<option value="В пути">В пути</option>
<option value="Доставлен">Доставлен</option>
<option value="Отменен">Отменен</option>
</select><select name="В пути"><option value="Ожидание">Ожидание</option>
<option selected="selected" value="В пути">В пути</option>
<option value="Доставлен">Доставлен</option>
<option value="Отменен">Отменен</option>
</select><select name="Доставлен"><option value="Ожидание">Ожидание</option>
<option value="В пути">В пути</option>
<option selected="selected" value="Доставлен">Доставлен</option>
<option value="Отменен">Отменен</option>
</select><select name="Отменен"><option value="Ожидание">Ожидание</option>
<option value="В пути">В пути</option>
<option value="Доставлен">Доставлен</option>
<option selected="selected" value="Отменен">Отменен</option>
</select><select name="Доставлен"><option value="Ожидание">Ожидание</option>
<option value="В пути">В пути</option>
<option selected="selected" value="Доставлен">Доставлен</option>
<option value="Отменен">Отменен</option>
</select><select name="В пути"><option value="Ожидание">Ожидание</option>
<option selected="selected" value="В пути">В пути</option>
<option value="Доставлен">Доставлен</option>
<option value="Отменен">Отменен</option>
</select><select name="Отменен"><option value="Ожидание">Ожидание</option>
<option value="В пути">В пути</option>
<option value="Доставлен">Доставлен</option>
<option selected="selected" value="Отменен">Отменен</option>
</select><select name="Ожидание"><option selected="selected" value="Ожидание">Ожидание</option>
<option value="В пути">В пути</option>
<option value="Доставлен">Доставлен</option>
<option value="Отменен">Отменен</option>
</select><select name="Отменен"><option value="Ожидание">Ожидание</option>
<option value="В пути">В пути</option>
<option value="Доставлен">Доставлен</option>
<option selected="selected" value="Отменен">Отменен</option>
</select>
По поводу получить выбранное пользователем значение. MVC - это не WebForms. Здесь несколько другой подход. Где ты хочешь получить значение (в контроллере или на клиенте)?
0
 Аватар для NSvLS
2 / 2 / 0
Регистрация: 16.06.2011
Сообщений: 40
10.05.2012, 16:00  [ТС]
1.И вправду значение невалидное было: <select name="В пути "> пробелы =))
2.Да хоть где-нибудь например в этом же самом примере если я изменю значение в списке, как мне его нужно обрабатывать в представлении?
0
42 / 42 / 6
Регистрация: 13.06.2011
Сообщений: 55
10.05.2012, 17:48
Клиент:
JavaScript
1
2
3
4
5
6
7
<script type="text/javascript">
    $(document).ready(function () {
        $("select[name^='order']").change(function () {
            alert("Id: " + this.id + ", Selected Value: " + $(this).val() + ", Selected Text: " + $(this).children("option:selected").text());
        });
    });
</script>
Сервер:
Действие контроллера:
C#
1
2
3
4
[HttpPost]
        public ActionResult Index(string order0, string order3) {
            return new EmptyResult();
        }
Представление:
C#
1
2
3
4
5
6
7
8
@using (Html.BeginForm()) {
foreach (var j in (List<MvcApplication1.Controllers.HomeController.Order>)ViewBag.order) {
    @Html.DropDownList("order" + i++, new SelectList(new[] { "Ожидание", "В пути", "Доставлен", "Отменен" }
                .Select(x => new { value = x, text = x }),
                    "value", "text", j.Status))<br />
}
<input type="submit" value="Send" />
}
1
 Аватар для NSvLS
2 / 2 / 0
Регистрация: 16.06.2011
Сообщений: 40
12.05.2012, 14:39  [ТС]
Спасибо за помощь!
p.s.Не сразу заметил 2 страницу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2012, 14:39
Помогаю со студенческими работами здесь

Как выбрать элемент DropDownList
Добрый день всем Ребята подскажите как правильно воспользоваться &lt;asp:DropDownList ID=&quot;dropDownListDay&quot;...

Как узнать индекс элемента в DropDownList чтобы удалить элемент из List<T>?
У меня есть список, в текст боксы вбиваю имена и фамилии совершенно рандомные, они выводятся в лейбл и в дропдаунлист, в дропдаунлисте...

DropDownList имеет SelectedIndex, что недопустимо, так как этот элемент не существует в списке элементов
Перестал работать код, выбрасывает эту ошибку. В pageload этот код: for (int i = -12; i &lt; 0; i++) ...

Каждый элемент dropdownlist показывает разное слайдшоу
Как создать dropdownlist, где каждый вариант из списка, показывает слайдшоу картинок. Массив картинок для каждого варианта отличается. Я...

Listbox Выбранный Элемент По Умолчанию
Добрый день всем, использую форму с полем ListBox в диалоге, возможно ли, что бы при старте диалога был выбран первый элемент в поле...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru