Bạn có ít nhất hai lựa chọn:
1.) Thêm một danh sách, mảng, hay bất kỳ loại bộ sưu tập khác của thành phố để mô hình của bạn
2.) Thêm thuộc tính SelectList vào mô hình của bạn
Tùy chọn 1 có thể đơn giản như một chuỗi các chuỗi hoặc có thể là đối tượng IEnumerable
của City
. Sau đó, bạn sẽ cần biến đổi thuộc tính này thành một tập hợp các đối tượng SelectListItem
trong dạng xem như một phần của ràng buộc DropDownList
.
Tùy chọn 2 có lợi thế là có khả năng liên kết trực tiếp với DropDownList
, nhưng yêu cầu bạn xây dựng danh sách trong phương thức hành động.
Sau đó kết quả cuối cùng là như nhau, đó chỉ là vấn đề về cách bạn muốn trở thành người khổng lồ về SoC.
Ví dụ (giả sử bạn thêm một tính chất gọi Cities
):
@Html.DropDownListFor(m=>m.City, Model.Cities.Select(city => new SelectListItem()
{
Text = city,
Value = city,
Selected = city == Model.City
})
EDIT:
Để trả lời bình luận của bạn, tôi phải thực hiện một số giả định. Tôi sẽ giả sử bạn có một mô hình được gọi là EmployeeModel
. Mô hình này có thuộc tính, City
, là một chuỗi đơn giản. Vì vậy, đây là một phần của mô hình của bạn, như tôi giả định nó là:
public class EmployeeModel
{
public string City { get; set; }
// ... other properties ...
}
Vì vậy, nếu bạn cần phải thêm một tài sản để ràng buộc để thả xuống, bạn sẽ làm một trong các cách sau:
public class EmployeeModel
{
public string City { get; set; }
public IEnumerable<string> Cities { get; set; }
// ... other properties ...
}
hoặc
public class EmployeeModel
{
public string City { get; set; }
public SelectList Cities { get; set; }
// ... other properties ...
}
tài sản mới này sẽ chứa danh sách các thành phố mà bạn cho phép người dùng của bạn (s) để chọn từ.
Nếu bạn chọn tùy chọn đầu tiên, bạn tải IEnumerable từ kho dữ liệu của bạn, và sau đó sử dụng ví dụ đầu tiên ở trên trong dạng xem của bạn, sử dụng LINQ để chiếu từng chuỗi trong thuộc tính Cities
vào đối tượng SelectListItem
mới.
Nếu bạn chọn tùy chọn thứ hai, bạn tạo một SelectList
trong hành động trước khi chuyển mô hình đến chế độ xem. Đây không phải là khó khăn khủng khiếp, vì lớp này cung cấp một hàm tạo có một số IEnumerable
(danh sách các thành phố của bạn) và "giá trị đã chọn", sẽ là thuộc tính City
(xem http://msdn.microsoft.com/en-us/library/dd460123%28v=vs.108%29.aspx). Mã của bạn sẽ giống như thế:
model.Cities = new SelectList(GetCities(), model.City);
này, tất nhiên, giả sử bạn có một phương pháp helper (GetCities()
) để tải các thành phố của bạn từ bất cứ nơi nào chúng được lưu trữ. tầm nhìn của bạn sau đó sẽ có một cái gì đó như thế này:
@Html.DropDownListFor(m=>m.City, model.Cities)
Các công cụ xem sau đó sử dụng những SelectListItem
s để xây dựng các yếu tố <select>
và nó <option>
yếu tố.
Giá trị sẽ đến từ đâu? Nó có phải là chìa khóa nước ngoài vào một bảng cơ sở dữ liệu, các giá trị hardcoded, cái gì khác? –
http://stackoverflow.com/questions/10484774/dropdown-in-mvc –