I have a table with: tbl_Category Id | Name | ParentID 1 Category 1 0 2 Category 2 0 3 Subcategory 11 1 4 Subcategory 12 1 5 Subcategory 21 2 6 Subcategory 211 5 7 Subcategory 22 2 ......... How do I return it in a dropdownlist in the below format: Category 1 --Subcategory 11 --Subcategory 12 --Subcatgory 13 Category 2 --Subcategory 21 ----Subcategory 211 ----Subcategory 212 --Subcategory 22 --Subcatgory 23 Category 3 --Subcategory 31 --Subcategory 32
ответ
Вы можете использовать HTML в вашем тексте так, например, попробовать:
Category1
Subcategory11
и т.п. Таким образом, текст будет отступом право в соответствии с уровнем категории
Вспомогательный метод Html.DropDownListFor
способен отображать элементы в группе. Вам просто нужно указать свойство Group
для каждого SelectListItem
.
var group1 = new SelectListGroup {Name = "Category 1"};
var group2 = new SelectListGroup { Name = "Category 2" };
var options= new List<SelectListItem>
{
new SelectListItem {Value = "1", Text = "Subcategory 11", Group = group1},
new SelectListItem {Value = "2", Text = "Subcategory 12", Group = group1},
new SelectListItem {Value = "3", Text = "Subcategory 21", Group = group2}
};
Использование метода хелперов
@Html.DropDownListFor(s=>s.SomeProperty,options)
или DropDownList
помощник
@Html.DropDownList("MySelectName", options)
Получение данных?
Если вы используете инфраструктуру Entity для доступа к данным, вы можете выполнить этот код, чтобы получить сгруппированные данные в вашем методе действий.
var db = new YourDbContextHere(); // Replace your db context class here
var parentsDictionary = db.Categories
.ToDictionary(d => d.Id, v => v.Name);
var groups = db.Categories.Select(x => x.Name)
.Select(f => new SelectListGroup() { Name = f }).ToList();
var itemsWithParents = (from c in db.Categories
join p in db.Categories
on c.ParentId equals p.Id
select new { Id = c.Id,
Text = c.Name,
ParentId = c.ParentId }).ToList();
var groupedData = itemsWithParents
.Where(f => f.ParentId != 0)
.Select(x => new SelectListItem
{
Value = x.Id.ToString(),
Text = x.Text,
Group = groups
.First(a =>
a.Name == parentsDictionary[x.ParentId])
}).ToList();
ViewBag.GroupedCategory= groupedData;
return View();
Я использую ViewBag для передачи данных, предполагая, что у вас нет модели просмотра.
Теперь на ваш взгляд, использовать метод DropDownList
помощника,
@Html.DropDownList("SelectedCategory",ViewBag.GroupedCategoryas List<SelectListItem>)
Мне нужно попасть в базу данных, использовать модель, контроллер, просмотреть ее. –
Я не знаю, что такое технология доступа к данным. Так что не могу помочь – Shyju
Я использую asp.net mvc 5. Модель получит данные из таблицы tbl_Category и покажет View –
- 1. ASP.NET MVC 5 DropDownList selectedindexchanged
- 2. Категории/Подкатегории в asp.net mvc
- 3. ASP.NET MVC ViewModel и DropDownList
- 4. Building DropDownList и Asp.Net MVC
- 5. MVC -DropDownList - Категории - Подкатегории
- 6. ASP.NET MVC: проверка DropDownList
- 7. asp.net mvc, dropdownlist, jquery
- 8. Population ASP.NET MVC DropDownList
- 9. ASP.NET MVC dropdownlist
- 10. ASP.NET MVC DropDownList Validation
- 11. Миграция ASP.NET MVC 5 в ASP.NET 5
- 12. ASP.NET MVC DropDownList NullReferenceException
- 13. ASP.NET MVC DropDownList
- 14. ASP.NET MVC - DropDownList OnChange
- 15. Проблема Asp.Net MVC DropDownList
- 16. asp.net mvc 5.0 dropdownlist
- 17. ASP.NET MVC + Populate DROPDOWNLIST
- 18. dropdownlist ASP.NET MVC
- 19. ASP.NET MVC 4 DropDownList selectedindexchanged
- 20. Каскадирование DropDownList и ListBox в ASP.Net MVC
- 21. Django, категория и подкатегории
- 22. ASP.NET 5 и цель MVC
- 23. Umbraco 5 и asp.net MVC
- 24. DropDownList asp.net MVC 3 Проблемы
- 25. asp.net mvc dropdownlist onchange routing
- 26. asp.net mvc dropdownlist получение selectedvalue
- 27. ASP.NET MVC - проблема проверки DropDownList
- 28. ASP.NET MVC Dropdownlist + save selectedvalue
- 29. ASP.NET MVC DropDownList внутри ViewUserControl
- 30. Asp.Net MVC DropDownList Data Binding
мне нужно, чтобы получить его в базе данных и отображения для просмотра. Как это сделать? –