2010-01-05 62 views
6

Tôi muốn biết cách tôi có thể ràng buộc các giá trị biểu mẫu của tôi với chế độ xem được nhập mạnh mẽ của tôi từ một hộp MultiSelect.asp.net mvc gõ mạnh kiểu xem với nhiều lựa chọn

Rõ ràng khi biểu mẫu gửi hộp chọn nhiều sẽ gửi chuỗi giá trị đã chọn của tôi ... cách tốt nhất để chuyển chuỗi giá trị này trở lại danh sách đối tượng để đính kèm vào mô hình của tôi là cập nhật?

public class MyViewModel { 
    public List<Genre> GenreList {get; set;} 
    public List<string> Genres { get; set; } 
} 

Khi cập nhật mô hình của tôi bên trong bộ điều khiển tôi đang sử dụng UpdateModel như dưới đây:

Account accountToUpdate = userSession.GetCurrentUser(); 
UpdateModel(accountToUpdate); 

Tuy nhiên tôi cần phải bằng cách nào đó có được các giá trị từ chuỗi lại thành các đối tượng.

Tôi tin rằng nó có thể có liên quan đến mô hình kết dính nhưng tôi không thể tìm thấy bất kỳ ví dụ rõ ràng nào về cách thực hiện việc này.

Cảm ơn !! Paul

Trả lời

3

Bạn chính xác rằng một trình kết nối mô hình là con đường để đi. Hãy thử điều này ...

using System.ComponentModel; 
using System.ComponentModel.DataAnnotations; 
using System.Web.Mvc; 

[ModelBinder(typeof(MyViewModelBinder))] 
public class MyViewModel { 
    .... 
} 

public class MyViewModelBinder : DefaultModelBinder { 
    protected override void SetProperty(ControllerContext context, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, object value) { 
     if (propertyDescriptor.Name == "Genres") { 
      var arrVals = ((string[])value)[0].Split(','); 
      base.SetProperty(context, bindingContext, propertyDescriptor, new List<string>(arrVals)); 
     } 
     else 
      base.SetProperty(context, bindingContext, propertyDescriptor, value); 
    } 
} 
0

Khám phá Phil Haacks blog post về chủ đề. Tôi đã sử dụng nó làm cơ sở cho một chế độ xem được chọn mạnh mẽ trong một dự án gần đây.

+0

Bài đăng của Haack là về danh sách liên kết của các đối tượng, chứ không phải hộp danh sách ... –

Các vấn đề liên quan