tôi có trang web asp.net-mvc và tôi muốn hiển thị danh sách thả xuống dựa trên enum. Tôi muốn hiển thị văn bản của mỗi mục enum và id là giá trị int mà enum được liên kết với. Có cách nào thanh lịch để thực hiện chuyển đổi này không?Làm cách nào để chuyển đổi một liệt kê thành một List <SelectListItem>?
Trả lời
Bạn có thể sử dụng LINQ:
Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Select(v => new SelectListItem {
Text = v.ToString(),
Value = ((int)v).ToString()
}).ToList();
Mặc dù * LINQ * đã trở thành tên không chính thức của Tiện ích mở rộng có thể đếm được nhưng tôi không thể không tự hỏi liệu có điều gì phù hợp hơn không. – ChaosPandion
Đó là một phần của không gian tên và dự án LINQ và IMO là tên chính xác. Linq cũng là tên của phần mở rộng ngôn ngữ. – Dykam
mã này ở trên không được biên dịch. Tôi đang cố gắng thực hiện điều này: Liệt kê
Bây giờ tôi sử dụng Tuple<string, string>
nhưng bạn có thể chuyển đổi này để sử dụng bất cứ điều gì:
var values = Enum.GetValues(typeof(DayOfWeek))
.Cast<DayOfWeek>()
.Select(d => Tuple.Create(((int)d).ToString(), d.ToString()))
.ToList()
Bạn có thể sử dụng Enum.GetNames()
để có được một mảng chuỗi chứa tên của các mục enum. Nếu tên mục của bạn thân thiện với người dùng, thì điều này có thể đủ tốt. Nếu không, bạn có thể tạo phương thức GetName()
của riêng mình để trả về tên đẹp cho mỗi mục.
HOẶC - nếu enum sẽ không bao giờ (hoặc hiếm khi) thay đổi, bạn chỉ có thể tạo phương thức trực tiếp thêm các mục được mã hóa cứng vào danh sách thả xuống của mình. Điều này có lẽ hiệu quả hơn (nếu điều đó quan trọng đối với bạn).
Kể từ khi MVC 5.1, cách thanh lịch nhất sẽ được sử dụng EnumDropDownListFor phương pháp Html helper nếu bạn cần để cư select
tùy chọn theo quan điểm của bạn:
@Html.EnumDropDownListFor(m => m.MyEnumProperty,new { @class="form-control"})
hoặc GetSelectList phương pháp của EnumHelper trong bộ điều khiển của bạn:
var enumList = EnumHelper.GetSelectList(typeof (MyEnum));
đẹp nhất, cảm ơn! –
Rất trơn! Không biết về điều này ... nên là câu trả lời đúng. –
wow, tôi không biết. rất nhiều dòng mã được lưu ngay bây giờ! Cảm ơn bạn! –
Tôi đã làm điều này bằng cách sử dụng một phương pháp tĩnh mà tôi có thể tái sử dụng.
public static IEnumerable<SelectListItem> EnumToSelectList<T>()
{
return (Enum.GetValues(typeof(T)).Cast<T>().Select(
e => new SelectListItem() { Text = e.ToString(), Value = e.ToString() })).ToList();
}
tôi đã sử dụng GetEnumSelectList
từ lớp Helper Html
<select asp-for="MyProperty" class="form-control" asp-items="@Html.GetEnumSelectList<MyEnum>()" ></select>
- 1. Chuyển đổi một liệt kê thành Iterator
- 2. Làm cách nào để chuyển đổi một số nguyên thành kiểu liệt kê?
- 3. C# Danh sách <string[]> để liệt kê <object[]> Chuyển đổi
- 4. Python - chuyển đổi chuỗi liệt kê
- 5. Chuyển đổi một danh sách liệt kê một tuple trong Python
- 6. Cast ListView Items để liệt kê <string>?
- 7. Làm thế nào để chuyển đổi một IEnumerable <IEnumerable <T>> thành IEnumerable <T>
- 8. Làm cách nào để chuyển đổi ArrayList <Object> thành ArrayList <String>?
- 9. Làm thế nào để chuyển đổi một vector <int> thành một chuỗi?
- 10. Làm thế nào để bạn chuyển đổi một SortedList thành một SortedList <>
- 11. Làm thế nào để chuyển đổi một IQueryable <T> thành một Danh sách <T>?
- 12. Maxima: chuyển đổi ma trận để liệt kê
- 13. chuỗi ints để liệt kê ints với một TryParse
- 14. Làm cách nào để chuyển đổi một IList không chung thành IList <T>?
- 15. Làm cách nào để chuyển đổi một DataTable thành IDatareader?
- 16. chuỗi để liệt kê chuyển đổi trong python?
- 17. Chuyển đổi danh sách liệt kê trong Python
- 18. Làm thế nào để chuyển đổi một SparseArray thành ArrayList?
- 19. Làm cách nào tôi có thể chuyển đổi một DBQuery <T> thành một ObjectQuery <T>?
- 20. Làm cách nào để quá tải một toán tử cho một liệt kê trong C#?
- 21. Cách truyền danh sách <? mở rộng Foo> để Liệt kê <Foo>
- 22. Làm thế nào để chuyển đổi System.Linq.Enumerable.WhereListIterator <int> thành Danh sách <int>?
- 23. Làm cách nào tôi có thể chuyển đổi một DataTable thành một chuỗi <Dictionary <string, object >>?
- 24. Chuyển đổi ngầm định từ kiểu liệt kê 'UIBarButtonSystemItem' thành kiểu liệt kê khác 'UIBarButtonItemStyle' - iPad - iOS5
- 25. Làm thế nào để chuyển đổi từ điển chung thành không chung chung mà không liệt kê?
- 26. làm thế nào để chuyển đổi ListItemCollection (dropdownlist.items) thành một từ điển <string, string>?
- 27. Làm cách nào để chuyển đổi IQueryable <Patient> này thành DbSet <Patient>?
- 28. Chuyển danh sách liệt kê của một danh sách sang một hàm
- 29. Java Enums: Liệt kê các giá trị được liệt kê từ một Class <? mở rộng Enum>
- 30. Cách lấy một tập hợp con của một liệt kê
câu trả lời Maksim Vi. thực sự là câu trả lời đúng. –