Bạn không thể ràng buộc danh sách thả xuống từ điển. Nó không có ý nghĩa. Để tạo ra một danh sách thả xuống, bạn cần 2 thứ: một thuộc tính vô hướng để ràng buộc giá trị đã chọn và một bộ sưu tập để ràng buộc các tùy chọn của danh sách thả xuống. Bạn chỉ có thứ hai trong hai thứ đó là từ điển. Vì vậy, bạn không thể sử dụng một helper mạnh mẽ đánh máy.
Bạn có thể làm việc xấu xa như sau:
@Html.DropDownList("SelectedValue", new SelectList(MyDictionary, "Key", "Value"))
nhưng tất nhiên một cách tiếp cận tốt hơn sẽ được sử dụng một mô hình điểm:
public class MyViewModel
{
public string SelectedValue { get; set; }
public SelectList Values { get; set; }
}
mà bạn sẽ cư trong hành động điều khiển của bạn:
public ActionResult Foo()
{
Dictionary<string, string> dic = ...
var model = new MyViewModel
{
Values = new SelectList(dic, "Key", "Value")
};
return View(model);
}
và cuối cùng là chế độ xem được nhập mạnh mẽ:
@model MyViewModel
@Html.DropDownListFor(x => x.SelectedValue, Model.Values)
Nguồn
2011-10-04 19:57:18
"Bạn có thể không ràng buộc danh sách thả xuống từ điển. Nó không có ý nghĩa "Bạn có thể giải thích tại sao? Bởi vì chúng ta có thể dễ dàng làm điều đó trong ASP.NET Web Forms. –