2010-06-09 38 views
5

Tôi có một mô hình/chế độ xem đơn giản với những thứ như Tên người dùng, Mật khẩu, v.v. và sử dụng những người giúp đỡ tốt để kết nối nó.ASP.NET MVC 2 - Làm cách nào để sử dụng DropDownListFor?

Tôi hiện có một trường có tên là "NumberOfChildren". Tôi muốn lưu trữ một số trong đó (int) và tôi muốn nó hiển thị hộp thả xuống có chứa "Không", "1", "2", v.v.

Tôi nghĩ rằng mô hình sẽ có danh sách hoặc phương thức trả về một danh sách, vì vậy tôi có thể chỉ định các giá trị như NumberOfChildren_List mà tôi đưa dữ liệu vào, và sau đó DropDownListFor kéo danh sách đó và hiển thị nó, khớp giá trị với giá trị của mục trong trình đơn thả xuống.

Tuy nhiên sau khi dành khoảng 30 phút để tìm hiểu cách hoạt động của trái đất, tôi đã từ bỏ và quyết định hỏi tại đây. Ý tưởng nào?

Edit: Đây là một số mã ...

<%: Html.DropDownListFor(m => m.NumberOfChildren, new SelectList(Model.NumberOfChildrenListValues))%> 

và trong mô hình

 [Required] 
     [DisplayName("How many children do you have?")] 
     public string NumberOfChildren { get; set; } 

     public IEnumerable<string> NumberOfChildrenListValues 
     { 
      get 
      { 
       List<string> list = new List<string>() { "None", "1", "2" }; 

       return list; 
      } 

      set 
      { 

      } 

     } 

tôi nhận được một đối tượng không được đặt để thể hiện của đối tượng lỗi mặc dù. Ý tưởng?

+0

có một cái nhìn tại http://stackoverflow.com/questions/2306527/asp-net-mvc-2-html-dropdownlistfor-confusion-with- viewmodel (poss. dupe) – Lazarus

+1

Vâng tôi đã thấy đầu tiên, nhưng nó gây nhầm lẫn như anh chàng đã có một số công cụ, và câu trả lời được chấp nhận là kỳ quái. – NibblyPig

Trả lời

2

Hãy thử như thế này (bạn cần phải thiết lập các văn bản giá trị cho mỗi tùy chọn - văn bản sẽ được sử dụng để render trong danh sách thả xuống và giá trị sẽ được sử dụng để liên kết với các mục chọn vào NumberOfChildren bất động sản):

[Required] 
[DisplayName("How many children do you have?")] 
public string NumberOfChildren { get; set; } 

public IEnumerable<SelectListItem> NumberOfChildrenListValues 
{ 
    get 
    { 
     return new[] 
     { 
      new SelectListItem { Value = "0", Text = "None" }, 
      new SelectListItem { Value = "1", Text = "1" }, 
      new SelectListItem { Value = "2", Text = "2" }, 
     }; 
    } 
} 

và sau đó:

<%: Html.DropDownListFor(
    m => m.NumberOfChildren, 
    Model.NumberOfChildrenListValues 
) %> 
Các vấn đề liên quan